56 lines
1.8 KiB
Python
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)
|