Files
amodem/tests/test_ecc.py
Roman Zeyde 54a86e1271 fix / -> //
2014-08-28 18:15:47 +03:00

33 lines
778 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',)