source: python/trunk/Lib/test/test_md5.py

Last change on this file was 2, checked in by Yuri Dario, 15 years ago

Initial import for vendor code.

  • Property svn:eol-style set to native
File size: 1.7 KB
Line 
1# Testing md5 module
2import warnings
3warnings.filterwarnings("ignore", "the md5 module is deprecated.*",
4 DeprecationWarning)
5
6import unittest
7from md5 import md5
8from test import test_support
9
10def hexstr(s):
11 import string
12 h = string.hexdigits
13 r = ''
14 for c in s:
15 i = ord(c)
16 r = r + h[(i >> 4) & 0xF] + h[i & 0xF]
17 return r
18
19class MD5_Test(unittest.TestCase):
20
21 def md5test(self, s, expected):
22 self.assertEqual(hexstr(md5(s).digest()), expected)
23 self.assertEqual(md5(s).hexdigest(), expected)
24
25 def test_basics(self):
26 eq = self.md5test
27 eq('', 'd41d8cd98f00b204e9800998ecf8427e')
28 eq('a', '0cc175b9c0f1b6a831c399e269772661')
29 eq('abc', '900150983cd24fb0d6963f7d28e17f72')
30 eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0')
31 eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b')
32 eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
33 'd174ab98d277d9f5a5611c2c9f419d9f')
34 eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890',
35 '57edf4a22be3c955ac49da2e2107b67a')
36
37 def test_hexdigest(self):
38 # hexdigest is new with Python 2.0
39 m = md5('testing the hexdigest method')
40 h = m.hexdigest()
41 self.assertEqual(hexstr(m.digest()), h)
42
43 def test_large_update(self):
44 aas = 'a' * 64
45 bees = 'b' * 64
46 cees = 'c' * 64
47
48 m1 = md5()
49 m1.update(aas)
50 m1.update(bees)
51 m1.update(cees)
52
53 m2 = md5()
54 m2.update(aas + bees + cees)
55 self.assertEqual(m1.digest(), m2.digest())
56
57def test_main():
58 test_support.run_unittest(MD5_Test)
59
60if __name__ == '__main__':
61 test_main()
Note: See TracBrowser for help on using the repository browser.