-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathhashes_test.go
More file actions
170 lines (160 loc) · 5.78 KB
/
Copy pathhashes_test.go
File metadata and controls
170 lines (160 loc) · 5.78 KB
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package imagehash2
import (
"reflect"
"testing"
"github.com/vitali-fedulov/images4"
)
var p1 = []uint16{
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255}
var p2 = []uint16{
231, 183, 148, 21, 47, 16, 69, 45, 151, 64, 181,
49, 243, 60, 147, 177, 19, 85, 205, 146, 236,
67, 28, 163, 143, 94, 138, 214, 149, 103, 57,
145, 74, 249, 235, 212, 30, 202, 88, 244, 196,
118, 95, 59, 148, 49, 165, 92, 10, 39, 253, 16,
2, 166, 126, 196, 22, 53, 84, 156, 117, 178, 8,
171, 134, 189, 7, 226, 156, 51, 211, 230, 14,
242, 165, 4, 246, 208, 35, 176, 248, 91, 81,
174, 68, 166, 15, 199, 78, 233, 75, 99, 117,
55, 140, 194, 127, 133, 198, 173, 2, 126, 84,
57, 88, 150, 72, 168, 41, 44, 43, 169, 143, 96,
75, 33, 204, 161, 153, 120, 178, 99, 181, 49,
132, 91, 38, 164, 45, 87, 92, 80, 85, 87, 195,
18, 220, 155, 66, 145, 239, 61, 222, 206, 235,
141, 75, 247, 223, 102, 232, 163, 17, 213, 221,
161, 175, 27, 191, 178, 243, 220, 86, 149, 34,
85, 185, 140, 30, 171, 213, 244, 192, 79, 254,
211, 9, 167, 176, 246, 62, 245, 42, 29, 192,
12, 10, 250, 10, 89, 182, 219, 49, 51, 38, 38,
25, 21, 76, 182, 163, 22, 200, 183, 242, 157,
71, 57, 99, 102, 84, 183, 143, 239, 220, 237,
221, 161, 167, 92, 245, 42, 223, 104, 50, 0,
106, 131, 53, 56, 177, 208, 49, 125, 212, 255,
169, 126, 154, 240, 161, 61, 23, 163, 60, 176,
138, 250, 211, 205, 134, 198, 36, 212, 206,
29, 233, 107, 109, 104, 36, 81, 53, 167, 204,
25, 60, 143, 234, 246, 63, 181, 109, 100, 149,
28, 56, 195, 155, 114, 141, 70, 139, 222, 207,
30, 213, 154, 238, 98, 117, 96, 182, 85, 17,
241, 21, 250, 4, 241, 173, 217, 53, 169, 158,
252, 221, 237, 252, 85, 59, 25, 209, 191, 120,
191, 122, 228, 240, 254, 133, 74, 190, 59, 180,
220, 27, 90, 197, 183, 179, 164, 188, 52, 105,
8, 149, 248, 11, 132, 248, 126, 99, 118, 227,
163, 82, 236, 98, 206, 218, 154, 231, 5, 201,
125, 47, 238, 152, 154, 12, 115, 225}
var p3 = []uint16{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0}
func TestHashSet(t *testing.T) {
want := []uint64{211211211, 212211211, 211221211, 212221211}
icon2 := images4.EmptyIcon()
for i := range p2 {
p2[i] = 255 * p2[i] // Premultiplication.
}
icon2.Pixels = p2
got := HashSet9(icon2, 0.25, 4)
if !reflect.DeepEqual(got, want) {
t.Errorf("Wanted %v, got %v.", want, got)
}
want = []uint64{0}
icon3 := images4.EmptyIcon()
for i := range p3 {
p3[i] = 255 * p3[i] // Premultiplication.
}
icon3.Pixels = p3
got = HashSet9(icon3, 0.25, 4)
if !reflect.DeepEqual(got, want) {
t.Errorf("Wanted %v, got %v.", want, got)
}
}
func TestCentralHash(t *testing.T) {
want := uint64(333333333)
icon1 := images4.EmptyIcon()
for i := range p1 {
p1[i] = 255 * p1[i] // Premultiplication.
}
icon1.Pixels = p1
got := CentralHash9(icon1, 0.25, 4)
if !reflect.DeepEqual(got, want) {
t.Errorf("Wanted %v, got %v.", want, got)
}
want = uint64(211221211)
icon2 := images4.EmptyIcon()
icon2.Pixels = p2
got = CentralHash9(icon2, 0.25, 4)
if !reflect.DeepEqual(got, want) {
t.Errorf("Wanted %v, got %v.", want, got)
}
}