extern crate reed_solomon;
use reed_solomon::Encoder;
use reed_solomon::Decoder;
const ECC_LEN: usize = 8;
#[test]
fn helloworld() {
let data = b"Hello, World!";
let enc = Encoder::new(ECC_LEN);
let dec = Decoder::new(ECC_LEN);
let encoded = enc.encode(&data[..]);
let mut corrupted = *encoded;
for i in 0..4 {
corrupted[i] = 0x0;
}
let recovered = dec.correct(&mut corrupted, None).unwrap();
assert_eq!(data, recovered.data());
}
#[test]
fn with_erasures() {
let data = b"Hello, World!";
let enc = Encoder::new(ECC_LEN);
let dec = Decoder::new(ECC_LEN);
let encoded = enc.encode(&data[..]);
let mut corrupted = *encoded;
for i in 0..4 {
corrupted[i] = 0x0;
}
let known_erasures = [0, 1, 2];
let recovered = dec.correct(&mut corrupted, Some(&known_erasures)).unwrap();
assert_eq!(data, recovered.data());
}