forked from zentures/cityhash
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cityhash32_test.go
73 lines (68 loc) · 4.35 KB
/
cityhash32_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
package cityhash
import (
"testing"
)
func TestCityHash32(t *testing.T) {
var testcases = []uint64{0xdc56d17a, 0x99929334, 0x4252edb7, 0xebc34f3c, 0x26f2b463, 0xb042c047, 0xe73bb0a8,
0x91dfdd75, 0xc87f95de, 0x3f5538ef, 0x70eb1a1f, 0xcfd63b83, 0x894a52ef, 0x9cde6a54, 0x6c4898d5, 0x13e1978e,
0x51b4ba8, 0xb6b06e40, 0x240a2f2, 0x5dcefc30, 0x7a48b105, 0xfd55007b, 0x6b95894c, 0x3360e827, 0x45177e0b, 0x7c6fffe4,
0xbbc78da4, 0xc5c25d39, 0xb6e5d06e, 0x6178504e, 0xbd4c3637, 0x6e7ac474, 0x1fb4b518, 0x31d13d6d, 0x26fa72e3, 0x6a7433bf,
0x4e6df758, 0xd57f63ea, 0x52ef73b3, 0x3cb36c3, 0x72c39bea, 0xa65aa25c, 0x74740539, 0xc3ae3c26, 0xf29db8a2, 0x1ef4cbf4,
0xa9be6c41, 0xfa31801, 0x8331c5d8, 0xe9876db8, 0x27b0604e, 0xdcec07f2, 0xcff0a82a, 0xfec83621, 0x743d8dc, 0x64d41d26,
0xacd90c81, 0x7c746a4b, 0xb1047e99, 0xd1fd1068, 0x56486077, 0x6069be80, 0x2078359b, 0x9ea21004, 0x9c9cfe88, 0xb70a6ddd,
0xdea37298, 0x8f480819, 0x30b3b16, 0xf31bc4e8, 0x419f953b, 0x20e9e76d, 0x646f0ff8, 0xeeb7eca8, 0x8112bb9, 0x85a6d477, 0x56f76c84,
0x9af45d55, 0xd1c33760, 0xc56bbf69, 0xabecfb9b, 0x8de13255, 0xa98ee299, 0x3015f556, 0x5a430e29, 0x2797add0, 0x27d55016,
0x84945a82, 0x3ef7e224, 0x35ed8dc8, 0x6a75e43d, 0x235d9805, 0xf7d69572, 0xbacd0199, 0xe428f50e, 0x81eaaad3,
0xaddbd3e3, 0xe66dbca0, 0xafe11fd5, 0xa71a406f, 0x9d90eaf5, 0x6665db10, 0x9c977cbf, 0xee83ddd4, 0x26519cc,
0xa485a53f, 0xf62bc412, 0x8975a436, 0x94ff7f41, 0x760aa031, 0x3bda76df, 0x498e2e65, 0xd38deb48, 0x82b3fb6b, 0xe500e25f,
0xbd2bb07c, 0x3a2b431d, 0x7322a83d, 0xa645ca1c, 0x8909a45a, 0xbd30074c, 0xc17cf001, 0x26ffd25a, 0xf1d8ce3c, 0x3ee8fb17,
0xa77acc2a, 0xf4556dee, 0xde287a64, 0x878e55b9, 0x7648486, 0x57ac0fb1, 0xd01967ca, 0x96ecdf74, 0x779f5506, 0x3c94c2de,
0x39f98faf, 0x7af31199, 0xe341a9d6, 0xca24aeeb, 0xb2252b57, 0x72c81da1, 0x6b9fce95, 0x19399857, 0x3c57a994, 0xc053e729,
0x51cbbba7, 0x1acde79a, 0x2d160d13, 0x787f5801, 0xc9629828, 0xbe139231, 0x7df699ef, 0x8ce6b96d, 0x6f9ed99c, 0xe0244796,
0x4ccf7e75, 0x915cef86, 0x5cb59482, 0x6ca3f532, 0xe24f3859, 0xadf5a9c7, 0x32264b75, 0xa64b3376, 0xd33890e,
0x926d4b63, 0xd51ba539, 0x7f37636d, 0xb98026c0, 0xb877767e, 0xaefae77, 0xf686911, 0x3deadf12, 0xccf02a4e,
0x176c1722, 0x26f82ad, 0xb5244f42, 0x49a689e5, 0x59fcdd3, 0x4f4b04e9, 0x8b00f891, 0x16e114f3, 0xd6b6dadc,
0x897e20ac, 0xf996e05d, 0xc4306af6, 0x6dcad433, 0x3c07374d, 0xf0f4602c, 0x3e1ea071, 0x67580f0c, 0x4e109454,
0x88a474a7, 0x5b5bedd, 0x1aaddfa7, 0x5be07fd8, 0xcbca8606, 0xbde64d01, 0xee90cf33, 0x4305c3ce, 0x4b3a1d76,
0xa8bb6d80, 0x1f9fa607, 0x8d0e4ed2, 0x1bf31347, 0x1ae3fc5b, 0x459c3930, 0xe00c4184, 0xffc7a781, 0x6a125480,
0x88a1512b, 0x549bbbe5, 0xc133d38c, 0xfcace348, 0xed7b6f9a, 0x6d907dda, 0x7a4d48d5, 0xe686f3db, 0xcce7c55,
0xf58b96b, 0x1bbf6f60, 0xce5e0cc2, 0x584cfd6f, 0x8f9bbc33, 0xd7640d95, 0x3d12a2b, 0xaaeafed0, 0x95b9b814,
0x45fbe66e, 0xb4baa7a8, 0x83e962fe, 0xaac3531c, 0x2b1db7cc, 0xcf00cd31, 0x7d3c43b8, 0xcbd5fac6, 0x76d0fec4,
0x405e3402, 0xc732c481, 0xa8d123c9, 0x1e80ad7d, 0x52aeb863, 0xef7c0c18, 0xb6ad4b68, 0xc1e46b17, 0x57b8df25,
0xe9fa36d6, 0x8f8daefc, 0x6e1bb7e, 0xfd0076f0, 0x899b17b6, 0xe3e84e31, 0xeef79b6b, 0x868e3315, 0x4639a426,
0xf3213646, 0x17f148e9, 0xbfd94880, 0xbb1fa7f3, 0x88816b1, 0x5c2faeb3, 0x51b5fc6f, 0x33d94752, 0xb0c92948,
0xc7171590, 0x240a67fb, 0xe1843cd5, 0xfda1452b, 0xa2cad330, 0x53467e16, 0xda14a8d0, 0x67333551, 0xa0ebd66e,
0x4b769593, 0x6aa75624, 0x602a3f96, 0xcd183c4d, 0x960a4d07, 0x9ae998c4, 0x74e2179d, 0xee9bae25, 0xb66edf10,
0xd6209737, 0xb994a88, 0xa05d43c0, 0xc79f73a8, 0xa490aff5, 0xdfad65b4, 0x1d07dfb, 0x416df9a0, 0x1f8fb9cc,
0x7abf48e3, 0xdea4e3dd, 0xc6064f22, 0x743bed9c, 0xfce254d5, 0xe47ec9d1, 0x334a145c, 0xadec1e3c, 0xf6a9fbf8,
0x5398210c}
data := generateTestData()
var i int
for i = 0; i < len(testcases); i++ {
assertEqual(t, testcases[i], uint64(Sum32(data[i])))
}
}
func assertEqual(t *testing.T, expected, actual uint64) {
if expected != actual {
t.Errorf("ERROR: expected 0x%x but got 0x%x\n", expected, actual)
}
}
func generateTestData() [300][]byte {
var fulldata []byte
var a uint64 = 9
var b uint64 = 777
for i := 0; i < (1 << 20); i++ {
a += b
b += a
a = (a ^ (a >> 41)) * k0
b = (b^(b>>41))*k0 + uint64(i)
u := uint8(b >> 37)
fulldata = append(fulldata, byte(u))
}
testdata := [300][]byte{}
for i := 0; i < 299; i++ {
testdata[i] = fulldata[i*i : (i*i)+i]
}
testdata[299] = fulldata
return testdata
}