mirror of
https://github.com/romanz/amodem.git
synced 2026-03-17 07:05:59 +08:00
add UT for ECC failure
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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',)
|
||||
|
||||
Reference in New Issue
Block a user