mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-26 04:12:34 +00:00
fix test case
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user