add UT for ECC failure

This commit is contained in:
Roman Zeyde
2014-08-28 17:20:14 +03:00
parent cf0c914ab6
commit e676040f46
2 changed files with 18 additions and 2 deletions

View File

@@ -42,7 +42,6 @@ def decode(blocks, nsym=DEFAULT_NSYM):
size = chunk[0]
payload = chunk[1:]
if size > len(payload):
raise ValueError('Invalid chunk', size, len(payload), payload)
assert size <= len(payload)
yield payload[:size]

View File

@@ -1,6 +1,7 @@
from amodem import ecc
import random
import itertools
import reedsolo
def concat(chunks):
@@ -13,3 +14,19 @@ def test_random():
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',)