| Guido van Rossum | 79c85f1 | 1993-12-14 15:54:01 +0000 | [diff] [blame] | 1 | # Testing md5 module | 
 | 2 |  | 
| Walter Dörwald | b167b04 | 2003-12-11 12:34:05 +0000 | [diff] [blame] | 3 | import unittest | 
| Guido van Rossum | 79c85f1 | 1993-12-14 15:54:01 +0000 | [diff] [blame] | 4 | from md5 import md5 | 
| Walter Dörwald | b167b04 | 2003-12-11 12:34:05 +0000 | [diff] [blame] | 5 | from test import test_support | 
| Guido van Rossum | 79c85f1 | 1993-12-14 15:54:01 +0000 | [diff] [blame] | 6 |  | 
 | 7 | def hexstr(s): | 
| Walter Dörwald | b167b04 | 2003-12-11 12:34:05 +0000 | [diff] [blame] | 8 |     import string | 
| Fred Drake | 004d5e6 | 2000-10-23 17:22:08 +0000 | [diff] [blame] | 9 |     h = string.hexdigits | 
 | 10 |     r = '' | 
 | 11 |     for c in s: | 
 | 12 |         i = ord(c) | 
 | 13 |         r = r + h[(i >> 4) & 0xF] + h[i & 0xF] | 
 | 14 |     return r | 
| Guido van Rossum | 79c85f1 | 1993-12-14 15:54:01 +0000 | [diff] [blame] | 15 |  | 
| Walter Dörwald | b167b04 | 2003-12-11 12:34:05 +0000 | [diff] [blame] | 16 | class MD5_Test(unittest.TestCase): | 
| Guido van Rossum | 79c85f1 | 1993-12-14 15:54:01 +0000 | [diff] [blame] | 17 |  | 
| Walter Dörwald | b167b04 | 2003-12-11 12:34:05 +0000 | [diff] [blame] | 18 |     def md5test(self, s, expected): | 
 | 19 |         self.assertEqual(hexstr(md5(s).digest()), expected) | 
 | 20 |         self.assertEqual(md5(s).hexdigest(), expected) | 
| Barry Warsaw | 3fdcccb | 2000-08-15 06:01:36 +0000 | [diff] [blame] | 21 |  | 
| Walter Dörwald | b167b04 | 2003-12-11 12:34:05 +0000 | [diff] [blame] | 22 |     def test_basics(self): | 
 | 23 |         eq = self.md5test | 
 | 24 |         eq('', 'd41d8cd98f00b204e9800998ecf8427e') | 
 | 25 |         eq('a', '0cc175b9c0f1b6a831c399e269772661') | 
 | 26 |         eq('abc', '900150983cd24fb0d6963f7d28e17f72') | 
 | 27 |         eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0') | 
 | 28 |         eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b') | 
| Tim Peters | 58eb11c | 2004-01-18 20:29:55 +0000 | [diff] [blame] | 29 |         eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', | 
| Walter Dörwald | b167b04 | 2003-12-11 12:34:05 +0000 | [diff] [blame] | 30 |            'd174ab98d277d9f5a5611c2c9f419d9f') | 
| Tim Peters | 58eb11c | 2004-01-18 20:29:55 +0000 | [diff] [blame] | 31 |         eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890', | 
| Walter Dörwald | b167b04 | 2003-12-11 12:34:05 +0000 | [diff] [blame] | 32 |            '57edf4a22be3c955ac49da2e2107b67a') | 
 | 33 |  | 
 | 34 |     def test_hexdigest(self): | 
 | 35 |         # hexdigest is new with Python 2.0 | 
 | 36 |         m = md5('testing the hexdigest method') | 
 | 37 |         h = m.hexdigest() | 
 | 38 |         self.assertEqual(hexstr(m.digest()), h) | 
 | 39 |  | 
 | 40 |     def test_large_update(self): | 
 | 41 |         aas = 'a' * 64 | 
 | 42 |         bees = 'b' * 64 | 
 | 43 |         cees = 'c' * 64 | 
 | 44 |  | 
 | 45 |         m1 = md5() | 
 | 46 |         m1.update(aas) | 
 | 47 |         m1.update(bees) | 
 | 48 |         m1.update(cees) | 
 | 49 |  | 
 | 50 |         m2 = md5() | 
 | 51 |         m2.update(aas + bees + cees) | 
 | 52 |         self.assertEqual(m1.digest(), m2.digest()) | 
 | 53 |  | 
 | 54 | def test_main(): | 
 | 55 |     test_support.run_unittest(MD5_Test) | 
 | 56 |  | 
 | 57 | if __name__ == '__main__': | 
 | 58 |     test_main() |