fix test case

This commit is contained in:
Henry Schimke
2022-10-14 17:31:06 -05:00
parent 01a7a18a63
commit 875fc6a05b

View File

@@ -1,6 +1,6 @@
use rand::Rng; use rand::Rng;
use super::{GenericGF, ReedSolomonDecoder, ReedSolomonEncoder, GenericGFRef}; use super::{GenericGF, GenericGFRef, ReedSolomonDecoder, ReedSolomonEncoder};
/* /*
* Copyrigh&t 2013 ZXing authors * Copyrigh&t 2013 ZXing authors
* *
@@ -343,24 +343,53 @@ fn test_aztec() {
fn corrupt(received: &mut Vec<i32>, howMany: i32, random: &mut rand::rngs::ThreadRng, max: i32) { fn corrupt(received: &mut Vec<i32>, howMany: i32, random: &mut rand::rngs::ThreadRng, max: i32) {
let mut corrupted = vec![false; received.len()]; let mut corrupted = vec![false; received.len()];
//BitSet corrupted = new BitSet(received.length); //BitSet corrupted = new BitSet(received.length);
let mut skip = false; let mut j = 0isize;
for _j in 0..howMany { while j < howMany as isize {
//for (int j = 0; j < howMany; j++) { // for (int j = 0; j < howMany; j++) {
if skip {
skip = false;
continue;
}
let location: usize = random.gen_range(0..received.len()); let location: usize = random.gen_range(0..received.len());
let value = random.gen_range(0..max); let value = random.gen_range(0..max);
if corrupted[location] || received[location] == value { if corrupted[location] || received[location] == value {
skip = true; j -= 1;
} else { } else {
corrupted[location] = true; corrupted[location] = true;
received[location] = value; received[location] = value;
} }
j += 1;
} }
// for _j in 0..howMany {
// //for (int j = 0; j < howMany; j++) {
// if skip {
// skip = false;
// continue;
// }
// let location: usize = random.gen_range(0..received.len());
// let value = random.gen_range(0..max);
// if corrupted[location] || received[location] == value {
// skip = true;
// } else {
// corrupted[location] = true;
// received[location] = value;
// }
// }
} }
/*
public static void corrupt(int[] received, int howMany, Random random, int max) {
BitSet corrupted = new BitSet(received.length);
for (int j = 0; j < howMany; j++) {
int location = random.nextInt(received.length);
int value = random.nextInt(max);
if (corrupted.get(location) || received[location] == value) {
j--;
} else {
corrupted.set(location);
received[location] = value;
}
}
}
*/
fn test_encode_decode_random(field: GenericGFRef, dataSize: usize, ecSize: usize) { fn test_encode_decode_random(field: GenericGFRef, dataSize: usize, ecSize: usize) {
assert!( assert!(
dataSize > 0 && dataSize <= field.getSize() - 3, dataSize > 0 && dataSize <= field.getSize() - 3,
@@ -418,7 +447,9 @@ fn test_encoder(field: GenericGFRef, dataWords: &Vec<i32>, ecWords: &Vec<i32>) {
//System.arraycopy(ecWords, 0, messageExpected, dataWords.len(), ecWords.len()); //System.arraycopy(ecWords, 0, messageExpected, dataWords.len(), ecWords.len());
message[0..dataWords.len()].clone_from_slice(&dataWords[0..dataWords.len()]); message[0..dataWords.len()].clone_from_slice(&dataWords[0..dataWords.len()]);
//System.arraycopy(dataWords, 0, message, 0, dataWords.len()); //System.arraycopy(dataWords, 0, message, 0, dataWords.len());
encoder.encode(&mut message, ecWords.len()); encoder
.encode(&mut message, ecWords.len())
.expect("should encode");
assert_data_equals( assert_data_equals(
format!( format!(
"Encode in {} ({},{}) failed", "Encode in {} ({},{}) failed",
@@ -443,15 +474,12 @@ fn test_decoder(field: GenericGFRef, dataWords: &Vec<i32>, ecWords: &Vec<i32>) {
}; };
for _j in 0..iterations { for _j in 0..iterations {
//for (int j = 0; j < iterations; j++) { //for (int j = 0; j < iterations; j++) {
let mut i = 0; let mut i = 0isize;
while i < ecWords.len() { while i < ecWords.len() as isize {
// for mut i in 0..ecWords.len() {
//for (int i = 0; i < ecWords.length; i++) { //for (int i = 0; i < ecWords.length; i++) {
if i > 10 && ecWords.len() / 2 > 11 && i < ecWords.len() / 2 - 10 { if i > 10 && i < ecWords.len() as isize / 2 - 10 {
// performance improvement - skip intermediate cases in long-running tests // performance improvement - skip intermediate cases in long-running tests
i += ecWords.len() / 10; i += ecWords.len() as isize / 10;
// skipping = true;
// skip_count += 1;
} }
message[0..dataWords.len()].clone_from_slice(&dataWords[0..dataWords.len()]); message[0..dataWords.len()].clone_from_slice(&dataWords[0..dataWords.len()]);
@@ -470,7 +498,7 @@ fn test_decoder(field: GenericGFRef, dataWords: &Vec<i32>, ecWords: &Vec<i32>) {
Err(e) => { Err(e) => {
// fail only if maxErrors exceeded // fail only if maxErrors exceeded
assert!( assert!(
i > maxErrors, i > maxErrors as isize,
"Decode in {} ({},{}) failed at {} errors: {:#?}", "Decode in {} ({},{}) failed at {} errors: {:#?}",
field, field,
dataWords.len(), dataWords.len(),
@@ -494,7 +522,7 @@ fn test_decoder(field: GenericGFRef, dataWords: &Vec<i32>, ecWords: &Vec<i32>) {
// // else stop // // else stop
// break; // break;
// } // }
if i < maxErrors { if i < maxErrors as isize {
assert_data_equals( assert_data_equals(
format!( format!(
"Decode in {} ({},{}) failed at {} errors", "Decode in {} ({},{}) failed at {} errors",
@@ -507,7 +535,7 @@ fn test_decoder(field: GenericGFRef, dataWords: &Vec<i32>, ecWords: &Vec<i32>) {
&message, &message,
); );
} }
i+=1; i += 1;
} }
} }
} }