|
@@ -1,7 +1,7 @@
|
|
|
from io import BytesIO
|
|
|
|
|
|
from ..chunker import Chunker, buzhash, buzhash_update
|
|
|
-from ..archive import CHUNK_MAX_EXP
|
|
|
+from ..archive import CHUNK_MAX_EXP, CHUNKER_PARAMS
|
|
|
from . import BaseTestCase
|
|
|
|
|
|
|
|
@@ -29,3 +29,14 @@ class ChunkerTestCase(BaseTestCase):
|
|
|
self.assert_equal(buzhash(b'abcdefghijklmnop', 1), buzhash_update(buzhash(b'Xabcdefghijklmno', 1), ord('X'), ord('p'), 16, 1))
|
|
|
# Test with more than 31 bytes to make sure our barrel_shift macro works correctly
|
|
|
self.assert_equal(buzhash(b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz', 0), 566521248)
|
|
|
+
|
|
|
+ def test_small_reads(self):
|
|
|
+ class SmallReadFile:
|
|
|
+ input = b'a' * (20 + 1)
|
|
|
+
|
|
|
+ def read(self, nbytes):
|
|
|
+ self.input = self.input[:-1]
|
|
|
+ return self.input[:1]
|
|
|
+
|
|
|
+ reconstructed = b''.join(Chunker(0, *CHUNKER_PARAMS).chunkify(SmallReadFile()))
|
|
|
+ assert reconstructed == b'a' * 20
|