Commit 88a3877f authored by Julien Muchembled's avatar Julien Muchembled

Add unit tests

parent d1786bbf
from distutils.core import setup
from distutils.extension import Extension
from setuptools import setup, Extension
kw = dict(name="zstd._bindings", libraries=["zstd"])
try:
......@@ -27,4 +26,5 @@ setup(
classifiers=classifiers.splitlines(),
packages = ['zstd'],
ext_modules = ext_modules,
test_suite='test',
)
import random, unittest
from zstd import compress, decompress, error, maxCLevel
class Test(unittest.TestCase):
def compress(self, data, *level):
compressed = compress(data, *level)
self.assertEqual(data, decompress(compressed))
return compressed
def testEmpty(self):
self.assertLessEqual(len(self.compress(b'')), 9)
def testLevels(self):
gauss = random.Random(0).gauss
data = bytes(bytearray(int(gauss(0, .8)) % 256 for _ in range(1<<20)))
max_level = maxCLevel()
self.assertLess(2, max_level)
levels = (1, 232499), (max_level, 159505)
for level, max_len in levels:
self.assertLessEqual(len(self.compress(data, level)), max_len)
compressed = self.compress(data)
self.assertEqual(compressed, compress(data, 0))
self.assertLess(levels[1][1], len(compressed))
self.assertLess(len(compressed), levels[0][1])
def testRandom(self):
N = 6
getrandbits = random.Random(0).getrandbits
data = bytes(bytearray(getrandbits(8) for _ in range(10**N)))
for i in range(1,1+N):
n = 10**i
self.assertLess(n, len(self.compress(data[:n])))
def testError(self):
def check(code, data):
with self.assertRaises(error) as cm:
decompress(data)
self.assertEqual(cm.exception.code, code)
for x in None, 0, u'':
self.assertRaises(TypeError, compress, x)
self.assertRaises(TypeError, decompress, x)
for data in b'foo', b' ' * 11:
compressed = self.compress(data)
for n in range(6):
self.assertRaises(RuntimeError, decompress, compressed[:n])
for n in range(6, len(compressed)-1):
check(72, compressed[:n])
check(72, compressed + b'!')
compressed = bytearray(
b'(\xb5/\xfd!\x0bE\x00\x00\x10 \x01\x00\x05\xc0\x02')
check(32, bytes(compressed))
compressed[4] ^= 5
check(22, bytes(compressed))
compressed[4] ^= 4
self.assertEqual(data, decompress(bytes(compressed)))
for e, c in (20, 1), (70, 3):
compressed[-1] = c
check(e, bytes(compressed))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment