py-utils/tests/unit/byteb4rb1e_utils/string/test_chunked_hash.py
2025-05-06 16:39:44 +02:00

56 lines
1.8 KiB
Python

import unittest
from byteb4rb1e_utils.string import (
ChunkedRollingHash,
ChunkedRollingHashOptions,
RollingHash,
)
class test___init__(unittest.TestCase):
"""ChunkedRollingHash.__init__()"""
def test_default(self):
"""default options"""
result = ChunkedRollingHash(b'abcdefgh')
self.assertEqual(result._mod, ChunkedRollingHashOptions.mod)
self.assertEqual(result._base, ChunkedRollingHashOptions.base)
self.assertEqual(result._max_chunk_size, ChunkedRollingHashOptions.max_chunk_size)
control_hash = RollingHash.compute_initial_hash(
b'abcdefgh',
base = result._base,
mod = result._mod
)
self.assertEqual(result._length, 8)
self.assertEqual(result._chunk_count, 1)
self.assertEqual(len(result._chunks_hash), result._chunk_count)
self.assertEqual(result._hash, control_hash)
self.assertEqual(result._chunks_hash[0], control_hash)
def test_override(self):
"""override of options"""
options = ChunkedRollingHashOptions(
mod = 4,
base = 10,
max_chunk_size = 5,
)
result = ChunkedRollingHash(b'abcdefgh', options)
self.assertEqual(result._mod, options.mod)
self.assertEqual(result._base, options.base)
self.assertEqual(result._max_chunk_size, options.max_chunk_size)
control_hash1 = RollingHash.compute_initial_hash(
b'abcde',
base = result._base,
mod = result._mod
)
control_hash2 = RollingHash.compute_initial_hash(
b'fgh',
base = result._base,
mod = result._mod
)
self.assertEqual(result._chunks_hash[0], control_hash1)
self.assertEqual(result._chunks_hash[1], control_hash2)