فهرست منبع

tests: Add HashVal md5 unit test that doesn't rely on hashlib

rdb 2 سال پیش
والد
کامیت
a63bbba4c1
1فایلهای تغییر یافته به همراه23 افزوده شده و 2 حذف شده
  1. 23 2
      tests/express/test_hashval.py

+ 23 - 2
tests/express/test_hashval.py

@@ -1,8 +1,13 @@
 from panda3d import core
 import random
-import hashlib
 import pytest
 
+try:
+    import hashlib
+except ImportError:
+    hashlib = object()
+    hashlib.algorithms_available = ()
+
 
 def test_hashval_hex():
     hex = '%032x' % random.getrandbits(32 * 4)
@@ -11,9 +16,25 @@ def test_hashval_hex():
     assert str(val) == hex.lower()
 
 
+def test_hashval_md5_known():
+    known_hashes = {
+        'd41d8cd98f00b204e9800998ecf8427e': b'',
+        '93b885adfe0da089cdf634904fd59f71': b'\000',
+        '3b5d3c7d207e37dceeedd301e35e2e58': b'\000' * 64,
+        '202cb962ac59075b964b07152d234b70': b'123',
+        '520620de89e220f9b5850cc97cbff46c': b'01234567' * 8,
+        'ad32d3ef227a5ebd800a40d4eeaff41f': b'01234567' * 8 + b'a',
+    }
+
+    for known, plain in known_hashes.items():
+        hv = core.HashVal()
+        hv.hash_bytes(plain)
+        assert hv.as_hex() == known
+
+
 @pytest.mark.skipif('md5' not in hashlib.algorithms_available,
                     reason="MD5 algorithm not available in hashlib")
-def test_hashval_md5():
+def test_hashval_md5_random():
     data = bytearray()
 
     for i in range(2500):