Infrastructure: Switch testing over to Autotest.
[mLib] / hash / t / unihash-testgen.py
CommitLineData
7cf5c72a
MW
1#! /usr/bin/python
2### -*-python-*-
3###
4### Generate test vectors for universal hashing.
5
6MOD = 0x104c11db7
7
8def gfmul(x, y):
9 a = 0
10 while y > 0:
11 if y & 1: a ^= x
12 if x & 0x80000000: x = (x << 1) ^ MOD
13 else: x <<= 1
14 y >>= 1
15 return a
16
17def hashtest(k, m):
18 h = k
19 for ch in m: h = gfmul(h ^ ord(ch), k)
20 print ' 0x%08x "%s" 0x%08x;' % (k, m, h)
21
22print '''\
23### Test vectors for universal hashing
24### [generated]
25
26hash {'''
27
28for k, m in [(0x00000000, 'anything you like'),
29 (0x12345678, 'an exaple test string'),
30 (0xb8a171f0, 'The quick brown fox jumps over the lazy dog.'),
31 (0x2940521b, 'A man, a plan, a canal: Panama!')]:
32 hashtest(k, m)
33
34k, m = 0x94b22a73, 0xbb7b1fef
35for i in xrange(48):
36 hashtest(k, "If we don't succeed, we run the risk of failure.")
37 k = gfmul(k, m)
38
39print '}'