tests/test-hashutil.py
changeset 44058 bde1cd4c99d9
child 44087 dc9b53482689
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-hashutil.py	Wed Jan 08 15:59:52 2020 -0500
@@ -0,0 +1,60 @@
+# Tests to ensure that sha1dc.sha1 is exactly a drop-in for
+# hashlib.sha1 for our needs.
+from __future__ import absolute_import
+
+import hashlib
+import unittest
+
+import silenttestrunner
+
+try:
+    from mercurial.thirdparty import sha1dc
+except ImportError:
+    sha1dc = None
+
+
+class hashertestsbase(object):
+    def test_basic_hash(self):
+        h = self.hasher()
+        h.update(b'foo')
+        self.assertEqual(
+            '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', h.hexdigest()
+        )
+        h.update(b'bar')
+        self.assertEqual(
+            '8843d7f92416211de9ebb963ff4ce28125932878', h.hexdigest()
+        )
+
+    def test_copy_hasher(self):
+        h = self.hasher()
+        h.update(b'foo')
+        h2 = h.copy()
+        h.update(b'baz')
+        h2.update(b'bar')
+        self.assertEqual(
+            '21eb6533733a5e4763acacd1d45a60c2e0e404e1', h.hexdigest()
+        )
+        self.assertEqual(
+            '8843d7f92416211de9ebb963ff4ce28125932878', h2.hexdigest()
+        )
+
+    def test_init_hasher(self):
+        h = self.hasher(b'initial string')
+        self.assertEqual(
+            b'\xc9y|n\x1f3S\xa4:\xbaJ\xca,\xc1\x1a\x9e\xb8\xd8\xdd\x86',
+            h.digest(),
+        )
+
+
+class hashlibtests(unittest.TestCase, hashertestsbase):
+    hasher = hashlib.sha1
+
+
+if sha1dc:
+
+    class sha1dctests(unittest.TestCase, hashertestsbase):
+        hasher = sha1dc.sha1
+
+
+if __name__ == '__main__':
+    silenttestrunner.main(__name__)