Mercurial > p > roundup > code
view test/test_anypy_hashlib.py @ 4652:dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Sometimes complicated computations may require an application cache.
This application can now register a callback to clear the application
cache, because roundup knows better when to clear it (usually when a
transaction ends, either with rollback or with commit). The interface
for this is currently considered experimental. The current interface
is registerClearCacheCallback(self, method, param) where method is
called with param as the only parameter.
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Fri, 17 Aug 2012 15:30:36 +0200 |
| parents | ab4563e97d22 |
| children | 4960a2c21590 |
line wrap: on
line source
#! /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""" data_for_test = ( ('', '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.data_for_test: 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.data_for_test: 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.data_for_test: 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.data_for_test: 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.data_for_test: 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.data_for_test: 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.data_for_test: 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.data_for_test: 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.data_for_test: 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.data_for_test: 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
