-
Notifications
You must be signed in to change notification settings - Fork 0
/
findduplicatefiles_test.go
92 lines (69 loc) · 2.6 KB
/
findduplicatefiles_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package findduplicatefiles
import (
"reflect"
"testing"
)
const dir string = "test/test_data"
func TestFindDuplicateFiles(t *testing.T) {
expected := make([][]string, 0)
expected = append(expected, []string{"test/test_data/test1.txt", "test/test_data/test2.txt"})
duplicates := FindDuplicateFiles(dir, 1)
if len(duplicates) != len(expected) {
t.Errorf("Differing slice length returned. Expected %v got %v", len(expected), len(duplicates))
}
for _, dups := range expected {
if !inSlice(duplicates, dups) {
t.Errorf("FindDuplicateFiles failed: Expected %v got %v", expected, duplicates)
}
}
}
func TestFindDuplicatesBySize(t *testing.T) {
expected := make(map[int64][]string)
expected[24] = []string{"test/test_data/test1.txt", "test/test_data/test2.txt", "test/test_data/test3.txt"}
expected[201706] = []string{"test/test_data/out.gif"}
fileSizes := findDuplicatesBySize(dir)
if len(fileSizes) != len(expected) {
t.Errorf("Differing map length returned. Expected %v got %v", len(expected), len(fileSizes))
}
if !reflect.DeepEqual(expected[24], fileSizes[24]) {
t.Errorf("Differing file sizes returned. Expected %v got %v", expected[24], fileSizes[24])
}
if !reflect.DeepEqual(expected[201706], fileSizes[201706]) {
t.Errorf("Differing file sizes returned. Expected %v got %v", expected[201706], fileSizes[201706])
}
}
func TestFindDuplicatesByHash(t *testing.T) {
expected := make([][]string, 0)
expected = append(expected, []string{"test/test_data/test1.txt", "test/test_data/test2.txt"})
files := []string{"test/test_data/test1.txt", "test/test_data/test2.txt", "test/test_data/test3.txt"}
duplicates := findDuplicatesByHash(files, 1, 24)
if len(duplicates) != len(expected) {
t.Errorf("Differing slice length returned. Expected %v got %v", len(expected), len(duplicates))
}
for _, dups := range expected {
if !inSlice(duplicates, dups) {
t.Errorf("findDuplicatesByHash failed: Expected %v got %v", expected, duplicates)
}
}
}
func TestGenerateHash(t *testing.T) {
file := "test/test_data/test1.txt"
expected := "525c67bc7b921a252bf84b04d6bf97c60cea73689b185fe0f0c309efd53be0f0"
generated := generateHash(file, 24)
if generated != expected {
t.Errorf("generateHash failed: Expected %v got %v", expected, generated)
}
expected = "4a1e67f2fe1d1cc7b31d0ca2ec441da4778203a036a77da10344c85e24ff0f92"
generated = generateHash(file, 12)
if generated != expected {
t.Errorf("generateHash failed: Expected %v got %v", expected, generated)
}
}
func inSlice(s1 [][]string, s2 []string) bool {
for _, s := range s1 {
if reflect.DeepEqual(s, s2) {
return true
}
}
return false
}