Mercurial > hg
view contrib/python-zstandard/tests/test_train_dictionary.py @ 30472:277f4fe6d01a
py3: provide bytes stdin/out/err through util module
Since standard streams are TextIO on Python 3, we can't use sys.stdin/out/err
directly. Fortunately we can get the underlying BytesIO via .buffer as long as
the streams aren't replaced by e.g. StringIO.
stdin/out/err are provided through util so we can wrap them by platform API.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Thu, 20 Oct 2016 23:40:24 +0900 |
parents | b86a448a2965 |
children | c32454d69b85 |
line wrap: on
line source
import sys try: import unittest2 as unittest except ImportError: import unittest import zstd if sys.version_info[0] >= 3: int_type = int else: int_type = long 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']) def test_basic(self): samples = [] for i in range(128): samples.append(b'foo' * 64) samples.append(b'bar' * 64) samples.append(b'foobar' * 64) samples.append(b'baz' * 64) samples.append(b'foobaz' * 64) samples.append(b'bazfoo' * 64) d = zstd.train_dictionary(8192, samples) self.assertLessEqual(len(d), 8192) dict_id = d.dict_id() self.assertIsInstance(dict_id, int_type) data = d.as_bytes() self.assertEqual(data[0:4], b'\x37\xa4\x30\xec')