Files
amodem/tests/test_ecc.py
2014-08-28 17:20:14 +03:00

33 lines
772 B
Python

from amodem import ecc
import random
import itertools
import reedsolo
def concat(chunks):
return bytearray(itertools.chain.from_iterable(chunks))
def test_random():
r = random.Random(0)
x = bytearray(r.randrange(0, 256) for i in range(64 * 1024))
y = ecc.encode(x)
x_ = concat(ecc.decode(y))
assert x_ == x
def test_errors():
data = bytearray(range(244))
blocks = list(ecc.encode(data))
assert len(blocks) == 2
for i in range(ecc.DEFAULT_NSYM/2):
blocks[0][i] = blocks[0][i] ^ 0xFF
i = ecc.DEFAULT_NSYM/2
try:
blocks[0][i] = blocks[0][i] ^ 0xFF
concat(ecc.decode(blocks))
assert False
except reedsolo.ReedSolomonError as e:
assert e.args == ('Too many errors to correct',)