This repository has been archived by the owner on Dec 5, 2024. It is now read-only.
forked from Dobatymo/metrohash-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.py
99 lines (82 loc) · 3.06 KB
/
test.py
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
import unittest
from metrohash import metrohash64, metrohash128, MetroHash64, MetroHash128, bytes2hex
class TestMetrohash(unittest.TestCase):
test_key_63 = b"012345678901234567890123456789012345678901234567890123456789012"
def test_metrohash64(self):
for cls, input, seed, truth in [
(MetroHash64, self.test_key_63, 0, "6b753dae06704bad"),
(MetroHash64, self.test_key_63, 1, "3b0d481cf4b9b8df"),
]:
h = cls(seed)
h.update(input)
self.assertEqual(truth, bytes2hex(h.digest()))
self.assertEqual(truth, h.hexdigest())
def test_metrohash64_update(self):
for cls, input, seed, truth in [
(MetroHash64, self.test_key_63, 0, "6b753dae06704bad"),
(MetroHash64, self.test_key_63, 1, "3b0d481cf4b9b8df"),
]:
h = cls(seed)
for i in range(0, len(input), 4):
h.digest()
h.update(input[i:i+4])
self.assertEqual(truth, bytes2hex(h.digest()))
self.assertEqual(truth, h.hexdigest())
def test_metrohash64_copy(self):
for cls, input, seed, truth in [
(MetroHash64, self.test_key_63, 0, "6b753dae06704bad"),
(MetroHash64, self.test_key_63, 1, "3b0d481cf4b9b8df"),
]:
h = cls(seed)
for i in range(0, len(input), 4):
h.update(input[i:i+4])
h = h.copy()
self.assertEqual(truth, bytes2hex(h.digest()))
self.assertEqual(truth, h.hexdigest())
def test_metrohash64_convenience(self):
for func, input, seed, truth in [
(metrohash64, self.test_key_63, 0, "6b753dae06704bad"),
(metrohash64, self.test_key_63, 1, "3b0d481cf4b9b8df"),
]:
result = bytes2hex(func(input, seed))
self.assertEqual(truth, result)
def test_metrohash128(self):
for cls, input, seed, truth in [
(MetroHash128, self.test_key_63, 0, "c77ce2bfa4ed9f9b0548b2ac5074a297"),
(MetroHash128, self.test_key_63, 1, "45a3cdb838199d7fbdd68d867a14ecef"),
]:
h = cls(seed)
h.update(input)
self.assertEqual(truth, bytes2hex(h.digest()))
self.assertEqual(truth, h.hexdigest())
def test_metrohash128_update(self):
for cls, input, seed, truth in [
(MetroHash128, self.test_key_63, 0, "c77ce2bfa4ed9f9b0548b2ac5074a297"),
(MetroHash128, self.test_key_63, 1, "45a3cdb838199d7fbdd68d867a14ecef"),
]:
h = cls(seed)
for i in range(0, len(input), 4):
h.digest()
h.update(input[i:i+4])
self.assertEqual(truth, bytes2hex(h.digest()))
self.assertEqual(truth, h.hexdigest())
def test_metrohash128_copy(self):
for cls, input, seed, truth in [
(MetroHash128, self.test_key_63, 0, "c77ce2bfa4ed9f9b0548b2ac5074a297"),
(MetroHash128, self.test_key_63, 1, "45a3cdb838199d7fbdd68d867a14ecef"),
]:
h = cls(seed)
for i in range(0, len(input), 4):
h.update(input[i:i+4])
h = h.copy()
self.assertEqual(truth, bytes2hex(h.digest()))
self.assertEqual(truth, h.hexdigest())
def test_metrohash128_convenience(self):
for func, input, seed, truth in [
(metrohash128, self.test_key_63, 0, "c77ce2bfa4ed9f9b0548b2ac5074a297"),
(metrohash128, self.test_key_63, 1, "45a3cdb838199d7fbdd68d867a14ecef"),
]:
result = bytes2hex(func(input, seed))
self.assertEqual(truth, result)
if __name__ == "__main__":
unittest.main()