| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- from panda3d import core
- import random
- import pytest
- try:
- import hashlib
- except ImportError:
- hashlib = object()
- hashlib.algorithms_available = ()
- def test_hashval_hex():
- hex = '%032x' % random.getrandbits(32 * 4)
- val = core.HashVal()
- val.input_hex(core.StringStream(hex.encode('ascii')))
- 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_random():
- data = bytearray()
- for i in range(2500):
- control = hashlib.md5(data).hexdigest()
- # Test hash_bytes
- hv = core.HashVal()
- hv.hash_bytes(bytes(data))
- assert hv.as_hex() == control
- # Test hash_stream
- hv = core.HashVal()
- result = hv.hash_stream(core.StringStream(data))
- assert result
- assert hv.as_hex() == control
- data.append(random.randint(0, 255))
|