Mercurial > public > mercurial-scm > hg-stable
diff contrib/python-zstandard/tests/test_train_dictionary.py @ 31799:e0dc40530c5a
zstd: vendor python-zstandard 0.8.0
Commit 81e1f5bbf1fc54808649562d3ed829730765c540 from
https://github.com/indygreg/python-zstandard is imported without
modifications (other than removing unwanted files).
Updates relevant to Mercurial include:
* Support for multi-threaded compression (we can use this for
bundle and wire protocol compression).
* APIs for batch compression and decompression operations using
multiple threads and optimal memory allocation mechanism. (Can
be useful for revlog perf improvements.)
* A ``BufferWithSegments`` type that models a single memory buffer
containing N discrete items of known lengths. This type can be
used for very efficient 0-copy data operations.
# no-check-commit
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 01 Apr 2017 15:24:03 -0700 |
parents | c32454d69b85 |
children | b1fb341d8a61 |
line wrap: on
line diff
--- a/contrib/python-zstandard/tests/test_train_dictionary.py Sat Apr 01 13:43:52 2017 -0700 +++ b/contrib/python-zstandard/tests/test_train_dictionary.py Sat Apr 01 15:24:03 2017 -0700 @@ -48,3 +48,63 @@ data = d.as_bytes() self.assertEqual(data[0:4], b'\x37\xa4\x30\xec') + + def test_set_dict_id(self): + samples = [] + for i in range(128): + samples.append(b'foo' * 64) + samples.append(b'foobar' * 64) + + d = zstd.train_dictionary(8192, samples, dict_id=42) + self.assertEqual(d.dict_id(), 42) + + +@make_cffi +class TestTrainCoverDictionary(unittest.TestCase): + def test_no_args(self): + with self.assertRaises(TypeError): + zstd.train_cover_dictionary() + + def test_bad_args(self): + with self.assertRaises(TypeError): + zstd.train_cover_dictionary(8192, u'foo') + + with self.assertRaises(ValueError): + zstd.train_cover_dictionary(8192, [u'foo']) + + def test_basic(self): + samples = [] + for i in range(128): + samples.append(b'foo' * 64) + samples.append(b'foobar' * 64) + + d = zstd.train_cover_dictionary(8192, samples, k=64, d=16) + self.assertIsInstance(d.dict_id(), int_type) + + data = d.as_bytes() + self.assertEqual(data[0:4], b'\x37\xa4\x30\xec') + + self.assertEqual(d.k, 64) + self.assertEqual(d.d, 16) + + def test_set_dict_id(self): + samples = [] + for i in range(128): + samples.append(b'foo' * 64) + samples.append(b'foobar' * 64) + + d = zstd.train_cover_dictionary(8192, samples, k=64, d=16, + dict_id=42) + self.assertEqual(d.dict_id(), 42) + + def test_optimize(self): + samples = [] + for i in range(128): + samples.append(b'foo' * 64) + samples.append(b'foobar' * 64) + + d = zstd.train_cover_dictionary(8192, samples, optimize=True, + threads=-1, steps=1, d=16) + + self.assertEqual(d.k, 16) + self.assertEqual(d.d, 16)