feat(string): init ChunkedRollingHash
This commit is contained in:
parent
b29ae6087d
commit
e5f0d1df58
3 changed files with 282 additions and 1 deletions
56
tests/unit/byteb4rb1e_utils/string/test_chunked_hash.py
Normal file
56
tests/unit/byteb4rb1e_utils/string/test_chunked_hash.py
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue