|
@@ -13,56 +13,56 @@ from . import cf
|
|
class ChunkerBuzHash64TestCase(BaseTestCase):
|
|
class ChunkerBuzHash64TestCase(BaseTestCase):
|
|
def test_chunkify64(self):
|
|
def test_chunkify64(self):
|
|
data = b"0" * int(1.5 * (1 << CHUNK_MAX_EXP)) + b"Y"
|
|
data = b"0" * int(1.5 * (1 << CHUNK_MAX_EXP)) + b"Y"
|
|
- parts = cf(ChunkerBuzHash64(0, 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(data)))
|
|
|
|
|
|
+ parts = cf(ChunkerBuzHash64(b"0", 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(data)))
|
|
self.assert_equal(len(parts), 2)
|
|
self.assert_equal(len(parts), 2)
|
|
self.assert_equal(b"".join(parts), data)
|
|
self.assert_equal(b"".join(parts), data)
|
|
- self.assert_equal(cf(ChunkerBuzHash64(0, 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(b""))), [])
|
|
|
|
|
|
+ self.assert_equal(cf(ChunkerBuzHash64(b"0", 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(b""))), [])
|
|
self.assert_equal(
|
|
self.assert_equal(
|
|
- cf(ChunkerBuzHash64(0, 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
- [b"fo", b"oba", b"rbo", b"ob", b"azfo", b"oba", b"rbo", b"ob", b"azfo", b"oba", b"rbo", b"obaz"],
|
|
|
|
|
|
+ cf(ChunkerBuzHash64(b"0", 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
+ [b"fo", b"obarbo", b"ob", b"azfo", b"obarbo", b"ob", b"azfo", b"obarbo", b"obaz"],
|
|
)
|
|
)
|
|
self.assert_equal(
|
|
self.assert_equal(
|
|
- cf(ChunkerBuzHash64(1, 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
- [b"foobarboobazfoobarboobazfoobarboobaz"],
|
|
|
|
|
|
+ cf(ChunkerBuzHash64(b"1", 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
+ [b"fooba", b"rboobaz", b"fooba", b"rboobaz", b"fooba", b"rboobaz"],
|
|
)
|
|
)
|
|
self.assert_equal(
|
|
self.assert_equal(
|
|
- cf(ChunkerBuzHash64(2, 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
- [b"foobarboob", b"azfoobarboob", b"azfoobarboobaz"],
|
|
|
|
|
|
+ cf(ChunkerBuzHash64(b"2", 1, CHUNK_MAX_EXP, 2, 2).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
+ [b"foob", b"arboobazfoob", b"arboobazfoob", b"arboobaz"],
|
|
)
|
|
)
|
|
self.assert_equal(
|
|
self.assert_equal(
|
|
- cf(ChunkerBuzHash64(0, 2, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
- [b"foobar", b"boobazfoo", b"barboobazfoo", b"barboobaz"],
|
|
|
|
|
|
+ cf(ChunkerBuzHash64(b"0", 2, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
+ [b"foobarb", b"oobaz", b"foobarb", b"oobaz", b"foobarb", b"oobaz"],
|
|
)
|
|
)
|
|
self.assert_equal(
|
|
self.assert_equal(
|
|
- cf(ChunkerBuzHash64(1, 2, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
- [b"foobarbooba", b"zfoobarbooba", b"zfoobarboobaz"],
|
|
|
|
- )
|
|
|
|
- self.assert_equal(
|
|
|
|
- cf(ChunkerBuzHash64(2, 2, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
|
|
+ cf(ChunkerBuzHash64(b"1", 2, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
[b"foobarbo", b"obazfo", b"obarbo", b"obazfo", b"obarbo", b"obaz"],
|
|
[b"foobarbo", b"obazfo", b"obarbo", b"obazfo", b"obarbo", b"obaz"],
|
|
)
|
|
)
|
|
self.assert_equal(
|
|
self.assert_equal(
|
|
- cf(ChunkerBuzHash64(0, 3, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
- [b"foobarboobazfoo", b"barboobazfoo", b"barboobaz"],
|
|
|
|
|
|
+ cf(ChunkerBuzHash64(b"2", 2, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
+ [b"foobarboobaz", b"foobarboobaz", b"foobarboobaz"],
|
|
)
|
|
)
|
|
self.assert_equal(
|
|
self.assert_equal(
|
|
- cf(ChunkerBuzHash64(1, 3, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
- [b"foobarbooba", b"zfoobarbooba", b"zfoobarboobaz"],
|
|
|
|
|
|
+ cf(ChunkerBuzHash64(b"0", 3, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
+ [b"foobarbo", b"obazfoobarb", b"oobazfoo", b"barboobaz"],
|
|
)
|
|
)
|
|
self.assert_equal(
|
|
self.assert_equal(
|
|
- cf(ChunkerBuzHash64(2, 3, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
|
|
+ cf(ChunkerBuzHash64(b"1", 3, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
[b"foobarbo", b"obazfoobarbo", b"obazfoobarbo", b"obaz"],
|
|
[b"foobarbo", b"obazfoobarbo", b"obazfoobarbo", b"obaz"],
|
|
)
|
|
)
|
|
|
|
+ self.assert_equal(
|
|
|
|
+ cf(ChunkerBuzHash64(b"2", 3, CHUNK_MAX_EXP, 2, 3).chunkify(BytesIO(b"foobarboobaz" * 3))),
|
|
|
|
+ [b"foobarboobaz", b"foobarboobaz", b"foobarboobaz"],
|
|
|
|
+ )
|
|
|
|
|
|
def test_buzhash64(self):
|
|
def test_buzhash64(self):
|
|
- self.assert_equal(buzhash64(b"abcdefghijklmnop", 0), 13314711829666336849)
|
|
|
|
- self.assert_equal(buzhash64(b"abcdefghijklmnop", 1), 17807676237451361719)
|
|
|
|
- expected = buzhash64(b"abcdefghijklmnop", 1)
|
|
|
|
- previous = buzhash64(b"Xabcdefghijklmno", 1)
|
|
|
|
- this = buzhash64_update(previous, ord("X"), ord("p"), 16, 1)
|
|
|
|
|
|
+ self.assert_equal(buzhash64(b"abcdefghijklmnop", b"0"), 13095190927899934478)
|
|
|
|
+ self.assert_equal(buzhash64(b"abcdefghijklmnop", b"1"), 10129419249308136910)
|
|
|
|
+ expected = buzhash64(b"abcdefghijklmnop", b"1")
|
|
|
|
+ previous = buzhash64(b"Xabcdefghijklmno", b"1")
|
|
|
|
+ this = buzhash64_update(previous, ord("X"), ord("p"), 16, b"1")
|
|
self.assert_equal(this, expected)
|
|
self.assert_equal(this, expected)
|
|
# Test with more than 63 bytes to make sure our barrel_shift macro works correctly
|
|
# Test with more than 63 bytes to make sure our barrel_shift macro works correctly
|
|
- self.assert_equal(buzhash64(b"abcdefghijklmnopqrstuvwxyz" * 4, 0), 592868834756664313)
|
|
|
|
|
|
+ self.assert_equal(buzhash64(b"abcdefghijklmnopqrstuvwxyz" * 4, b"0"), 9064183923498167899)
|
|
|
|
|
|
def test_small_reads64(self):
|
|
def test_small_reads64(self):
|
|
class SmallReadFile:
|
|
class SmallReadFile:
|