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') |
| 29 | eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', |
| 30 | 'd174ab98d277d9f5a5611c2c9f419d9f') |
| 31 | eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890', |
| 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() |