diff --git a/test/test_anypy_hashlib.py b/test/test_anypy_hashlib.py
--- /dev/null
@@ -0,0 +1,139 @@
+#! /usr/bin/env python
+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 hashlib):
+ warnings.warn('anypy.hashlib_ continuity', 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_expected(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.new(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_expected(self):
+ """sha.new is sha.sha, or at least yields expected results"""
+ if sha.new is sha.sha:
+ return
+ else:
+ 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