mirror of
https://github.com/romanz/amodem.git
synced 2026-04-22 06:16:26 +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]
|
size = chunk[0]
|
||||||
payload = chunk[1:]
|
payload = chunk[1:]
|
||||||
if size > len(payload):
|
assert size <= len(payload)
|
||||||
raise ValueError('Invalid chunk', size, len(payload), payload)
|
|
||||||
|
|
||||||
yield payload[:size]
|
yield payload[:size]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
from amodem import ecc
|
from amodem import ecc
|
||||||
import random
|
import random
|
||||||
import itertools
|
import itertools
|
||||||
|
import reedsolo
|
||||||
|
|
||||||
|
|
||||||
def concat(chunks):
|
def concat(chunks):
|
||||||
@@ -13,3 +14,19 @@ def test_random():
|
|||||||
y = ecc.encode(x)
|
y = ecc.encode(x)
|
||||||
x_ = concat(ecc.decode(y))
|
x_ = concat(ecc.decode(y))
|
||||||
assert x_ == x
|
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