Skip to content

Commit 3dbca93

Browse files
committed
Add unit tests
1 parent 7d2ae10 commit 3dbca93

File tree

2 files changed

+83
-9
lines changed

2 files changed

+83
-9
lines changed

setup.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
implementation which is fairly simple to wrap with a Python extension, which is much
77
faster than re-implementation in pure Python.
88
"""
9-
from distutils.core import setup, Extension
9+
from setuptools import setup, Extension
1010

1111

1212
doclines = __doc__.split("\n")
@@ -21,6 +21,7 @@
2121
license = "Public Domain",
2222
platforms = ["any"],
2323
ext_modules = [Extension("whirlpool", ["main.c"])],
24-
data_files = [("whirlpool", ['nessie.h', "Whirlpool.c"])]
24+
data_files = [("whirlpool", ['nessie.h', "Whirlpool.c"])],
25+
test_suite = "tests"
2526
)
2627

tests.py

Lines changed: 80 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,82 @@
1-
from whirlpool import hash
1+
import unittest
2+
3+
import whirlpool
4+
25
from binascii import b2a_hex
36

4-
assert b2a_hex(hash('The quick brown fox jumps over the lazy dog')) == \
5-
'b97de512e91e3828b40d2b0fdce9ceb3c4a71f9bea8d88e75c4fa854df36725fd2b52eb6544edcacd6f8beddfea403cb55ae31f03ad62a5ef54e42ee82c3fb35'
6-
assert b2a_hex(hash('The quick brown fox jumps over the lazy eog')) == \
7-
'c27ba124205f72e6847f3e19834f925cc666d0974167af915bb462420ed40cc50900d85a1f923219d832357750492d5c143011a76988344c2635e69d06f2d38c'
8-
assert b2a_hex(hash('')) == \
9-
'19fa61d75522a4669b44e39c1d2e1726c530232130d407f89afee0964997f7a73e83be698b288febcf88e3e03c4f0757ea8964e59b63d93708b138cc42a66eb3'
7+
8+
results = {
9+
'empty' : '19fa61d75522a4669b44e39c1d2e1726c530232130d407f89afee0964997f7a73e83be698b288febcf88e3e03c4f0757ea8964e59b63d93708b138cc42a66eb3',
10+
'tqbfjotld' : 'b97de512e91e3828b40d2b0fdce9ceb3c4a71f9bea8d88e75c4fa854df36725fd2b52eb6544edcacd6f8beddfea403cb55ae31f03ad62a5ef54e42ee82c3fb35',
11+
'tqbfjotle' : 'c27ba124205f72e6847f3e19834f925cc666d0974167af915bb462420ed40cc50900d85a1f923219d832357750492d5c143011a76988344c2635e69d06f2d38c',
12+
'tqbf' : '317edc3c5172ea5987902aa9c4f1defedf4d5aa59209bdf7574cc6da0039852c24b8da70ecb07997ff83e86d32d2851215d3dcbd6bb9736bdef21c349d483e6d',
13+
}
14+
15+
16+
class TestWhirlpool(unittest.TestCase):
17+
18+
def test_hash_empty(self):
19+
self.assertEqual(b2a_hex(whirlpool.hash('')), results['empty'])
20+
21+
def test_hash_fox(self):
22+
self.assertEqual(
23+
b2a_hex(whirlpool.hash('The quick brown fox jumps over the lazy dog')),
24+
results['tqbfjotld'])
25+
self.assertEqual(
26+
b2a_hex(whirlpool.hash('The quick brown fox jumps over the lazy eog')),
27+
results['tqbfjotle'])
28+
29+
def test_new_empty(self):
30+
wp = whirlpool.new()
31+
self.assertEqual(b2a_hex(wp.digest()), results['empty'])
32+
self.assertEqual(wp.hexdigest(), results['empty'])
33+
34+
def test_new_fox(self):
35+
wp1 = whirlpool.new('The quick brown fox jumps over the lazy dog')
36+
self.assertEqual(b2a_hex(wp1.digest()), results['tqbfjotld'])
37+
self.assertEqual(wp1.hexdigest(), results['tqbfjotld'])
38+
39+
wp2 = whirlpool.new('The quick brown fox jumps over the lazy eog')
40+
self.assertEqual(b2a_hex(wp2.digest()), results['tqbfjotle'])
41+
self.assertEqual(wp2.hexdigest(), results['tqbfjotle'])
42+
43+
def test_update_copy(self):
44+
wp1 = whirlpool.new()
45+
wp2 = wp1.copy()
46+
wp1.update('The quick brown fox')
47+
wp3 = wp1.copy()
48+
49+
self.assertEqual(b2a_hex(wp1.digest()), results['tqbf'])
50+
self.assertEqual(wp1.hexdigest(), results['tqbf'])
51+
52+
self.assertEqual(b2a_hex(wp2.digest()), results['empty'])
53+
self.assertEqual(wp2.hexdigest(), results['empty'])
54+
55+
self.assertEqual(b2a_hex(wp3.digest()), results['tqbf'])
56+
self.assertEqual(wp3.hexdigest(), results['tqbf'])
57+
58+
wp1.update(' jumps over the lazy dog')
59+
60+
self.assertEqual(b2a_hex(wp1.digest()), results['tqbfjotld'])
61+
self.assertEqual(wp1.hexdigest(), results['tqbfjotld'])
62+
63+
self.assertEqual(b2a_hex(wp2.digest()), results['empty'])
64+
self.assertEqual(wp2.hexdigest(), results['empty'])
65+
66+
self.assertEqual(b2a_hex(wp3.digest()), results['tqbf'])
67+
self.assertEqual(wp3.hexdigest(), results['tqbf'])
68+
69+
wp3.update(' jumps over the lazy eog')
70+
71+
self.assertEqual(b2a_hex(wp1.digest()), results['tqbfjotld'])
72+
self.assertEqual(wp1.hexdigest(), results['tqbfjotld'])
73+
74+
self.assertEqual(b2a_hex(wp2.digest()), results['empty'])
75+
self.assertEqual(wp2.hexdigest(), results['empty'])
76+
77+
self.assertEqual(b2a_hex(wp3.digest()), results['tqbfjotle'])
78+
self.assertEqual(wp3.hexdigest(), results['tqbfjotle'])
79+
80+
81+
if __name__ == '__main__':
82+
unittest.main()

0 commit comments

Comments
 (0)