Index: test/test_anypy_hashlib.py =================================================================== --- test/test_anypy_hashlib.py (revision 0) +++ test/test_anypy_hashlib.py (revision 4116) @@ -0,0 +1,140 @@ +import unittest +import warnings + +import roundup.anypy.hashlib_ + +class UntestableWarning(Warning): + pass + +# suppress deprecation warnings; -> warnings.filters[0]: +warnings.simplefilter(action='ignore', + category=DeprecationWarning, + append=0) + +try: + import sha +except: + warnings.warn('sha module functions', UntestableWarning) + sha = None + +try: + import md5 +except: + warnings.warn('md5 module functions', UntestableWarning) + md5 = None + +try: + import hashlib +except: + warnings.warn('hashlib module functions', UntestableWarning) + hashlib = None + +# preserve other warning filters set elsewhere: +del warnings.filters[0] + +if not (sha or md5) and not hashlib: + warnings.warn('anypy.hashlib_ sanity', UntestableWarning) + +class TestCase_anypy_hashlib(unittest.TestCase): + """test the hashlib compatibility layer""" + + testdata = ( + ('', + 'da39a3ee5e6b4b0d3255bfef95601890afd80709', + 'd41d8cd98f00b204e9800998ecf8427e'), + ('Strange women lying in ponds distributing swords' + ' is no basis for a system of government.', + 'da9b2b00466b00411038c057681fe67349f92d7d', + 'b71c5178d316ec446c25386f4857d4f9'), + ('Ottos Mops hopst fort', + 'fdf7e6c54cf07108c86edd8d47c90450671c2c81', + 'a3dce74bee59ee92f1038263e5252500'), + ('Dieser Satz kein Verb', + '3030aded8a079b92043a39dc044a35443959dcdd', + '2f20c69d514228011fb0d32e14dd5d80'), + ) + + # the following two are always excecuted: + def test_sha1_expected_anypy(self): + """...anypy.hashlib_.sha1().hexdigest() yields expected results""" + for src, SHA, MD5 in self.testdata: + self.assertEqual(roundup.anypy.hashlib_.sha1(src).hexdigest(), SHA) + + def test_md5_expected_anypy(self): + """...anypy.hashlib_.md5().hexdigest() yields expected results""" + for src, SHA, MD5 in self.testdata: + self.assertEqual(roundup.anypy.hashlib_.md5(src).hexdigest(), MD5) + + # execution depending on availability of modules: + if md5 and hashlib: + def test_md5_continuity(self): + """md5.md5().digest() == hashlib.md5().digest()""" + if md5.md5 is hashlib.md5: + return + else: + for s, i1, i2 in self.testdata: + self.assertEqual(md5.md5(s).digest(), + hashlib.md5().digest()) + + if md5: + def test_md5_expected(self): + """md5.md5().hexdigest() yields expected results""" + for src, SHA, MD5 in self.testdata: + self.assertEqual(md5.md5(src).hexdigest(), MD5) + + def test_md5_new(self): + """md5.new is md5.md5, or at least yields expected results""" + if md5.new is md5.md5: + return + else: + for src, SHA, MD5 in self.testdata: + self.assertEqual(md5.md5(src).hexdigest(), MD5) + + if sha and hashlib: + def test_sha1_continuity(self): + """sha.sha().digest() == hashlib.sha1().digest()""" + if sha.sha is hashlib.sha1: + return + else: + for s in self.testdata: + self.assertEqual(sha.sha(s).digest(), + hashlib.sha1().digest()) + + if sha: + def test_sha_expected(self): + """sha.sha().hexdigest() yields expected results""" + for src, SHA, MD5 in self.testdata: + self.assertEqual(sha.sha(src).hexdigest(), SHA) + + # fails for me with Python 2.3; unittest module bug? + def test_sha_new(self): + """sha.new is sha.sha, or at least yields expected results""" + if sha.new is sha.sha: + return + else: + import pdb + pdb.set_trace() + for src, SHA, MD5 in self.testdata: + self.assertEqual(sha.new(src).hexdigest(), SHA) + + if hashlib: + def test_sha1_expected_hashlib(self): + """hashlib.sha1().hexdigest() yields expected results""" + for src, SHA, MD5 in self.testdata: + self.assertEqual(hashlib.sha1(src).hexdigest(), SHA) + + def test_md5_expected_hashlib(self): + """hashlib.md5().hexdigest() yields expected results""" + for src, SHA, MD5 in self.testdata: + self.assertEqual(hashlib.md5(src).hexdigest(), MD5) + +def test_suite(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(TestCase_anypy_hashlib)) + return suite + +if __name__ == '__main__': + runner = unittest.TextTestRunner() + unittest.main(testRunner=runner) + +# vim: ts=8 et sts=4 sw=4 si