##// END OF EJS Templates
mail: fix _encode to be more correct on Python 3...
mail: fix _encode to be more correct on Python 3 This code appears to be on the wrong side of the law in Python 2, at least some of the time. In Python 3, it's definitely wrong in places, but fortunately that's easy to fix. Differential Revision: https://phab.mercurial-scm.org/D3953

File last commit:

r37513:b1fb341d default
r39058:858fe962 default
Show More
test_train_dictionary.py
87 lines | 2.8 KiB | text/x-python | PythonLexer
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 import struct
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 import sys
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 import unittest
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 import zstandard as zstd
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
Gregory Szorc
zstd: vendor python-zstandard 0.7.0...
r30895 from . common import (
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 generate_samples,
Gregory Szorc
zstd: vendor python-zstandard 0.7.0...
r30895 make_cffi,
)
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
if sys.version_info[0] >= 3:
int_type = int
else:
int_type = long
Gregory Szorc
zstd: vendor python-zstandard 0.7.0...
r30895 @make_cffi
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 class TestTrainDictionary(unittest.TestCase):
def test_no_args(self):
with self.assertRaises(TypeError):
zstd.train_dictionary()
def test_bad_args(self):
with self.assertRaises(TypeError):
zstd.train_dictionary(8192, u'foo')
with self.assertRaises(ValueError):
zstd.train_dictionary(8192, [u'foo'])
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 def test_no_params(self):
d = zstd.train_dictionary(8192, generate_samples())
self.assertIsInstance(d.dict_id(), int_type)
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 # The dictionary ID may be different across platforms.
expected = b'\x37\xa4\x30\xec' + struct.pack('<I', d.dict_id())
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
data = d.as_bytes()
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 self.assertEqual(data[0:8], expected)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
def test_basic(self):
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 d = zstd.train_dictionary(8192, generate_samples(), k=64, d=16)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 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):
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 d = zstd.train_dictionary(8192, generate_samples(), k=64, d=16,
dict_id=42)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 self.assertEqual(d.dict_id(), 42)
def test_optimize(self):
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 d = zstd.train_dictionary(8192, generate_samples(), threads=-1, steps=1,
d=16)
self.assertEqual(d.k, 50)
self.assertEqual(d.d, 16)
@make_cffi
class TestCompressionDict(unittest.TestCase):
def test_bad_mode(self):
with self.assertRaisesRegexp(ValueError, 'invalid dictionary load mode'):
zstd.ZstdCompressionDict(b'foo', dict_type=42)
def test_bad_precompute_compress(self):
d = zstd.train_dictionary(8192, generate_samples(), k=64, d=16)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 with self.assertRaisesRegexp(ValueError, 'must specify one of level or '):
d.precompute_compress()
with self.assertRaisesRegexp(ValueError, 'must only specify one of level or '):
d.precompute_compress(level=3,
compression_params=zstd.CompressionParameters())
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 def test_precompute_compress_rawcontent(self):
d = zstd.ZstdCompressionDict(b'dictcontent' * 64,
dict_type=zstd.DICT_TYPE_RAWCONTENT)
d.precompute_compress(level=1)
d = zstd.ZstdCompressionDict(b'dictcontent' * 64,
dict_type=zstd.DICT_TYPE_FULLDICT)
with self.assertRaisesRegexp(zstd.ZstdError, 'unable to precompute dictionary'):
d.precompute_compress(level=1)