From d2ab7de5dd056110f13baaf62d0abf7cb924afb8 Mon Sep 17 00:00:00 2001 From: Steve Cook Date: Thu, 2 Mar 2023 00:06:30 -0500 Subject: [PATCH] Add error reporting to tests --- src/multi_format_reader.rs | 22 +++++----- src/oned/one_d_reader.rs | 4 +- src/oned/rss/expanded/test_case_util.rs | 8 +++- tests/common/abstract_black_box_test_case.rs | 42 ++++++++++++-------- tests/common/pdf_417_multiimage_span.rs | 11 +++-- 5 files changed, 52 insertions(+), 35 deletions(-) diff --git a/src/multi_format_reader.rs b/src/multi_format_reader.rs index a534354..46989e0 100644 --- a/src/multi_format_reader.rs +++ b/src/multi_format_reader.rs @@ -119,22 +119,20 @@ impl MultiFormatReader { &mut self, image: &mut BinaryBitmap, ) -> Result { - if !self.possible_formats.is_empty() { + let res = self.decode_formats(image); + if res.is_ok() { + return res; + } + if matches!( + self.hints.get(&DecodeHintType::ALSO_INVERTED), + Some(DecodeHintValue::AlsoInverted(true)) + ) { + // Calling all readers again with inverted image + image.get_black_matrix_mut().flip_self(); let res = self.decode_formats(image); if res.is_ok() { return res; } - if matches!( - self.hints.get(&DecodeHintType::ALSO_INVERTED), - Some(DecodeHintValue::AlsoInverted(true)) - ) { - // Calling all readers again with inverted image - image.get_black_matrix_mut().flip_self(); - let res = self.decode_formats(image); - if res.is_ok() { - return res; - } - } } Err(Exceptions::NOT_FOUND) } diff --git a/src/oned/one_d_reader.rs b/src/oned/one_d_reader.rs index 6e3e541..53e1d75 100644 --- a/src/oned/one_d_reader.rs +++ b/src/oned/one_d_reader.rs @@ -105,8 +105,8 @@ pub trait OneDReader: Reader { } } let Ok(mut result) = self.decode_row(row_number as u32, &row, &hints) else { - continue - }; + continue + }; // We found our barcode if attempt == 1 { // But it was upside down, so note that diff --git a/src/oned/rss/expanded/test_case_util.rs b/src/oned/rss/expanded/test_case_util.rs index 8fd9ed1..96721d4 100644 --- a/src/oned/rss/expanded/test_case_util.rs +++ b/src/oned/rss/expanded/test_case_util.rs @@ -28,7 +28,9 @@ use std::rc::Rc; use image::DynamicImage; -use crate::{common::GlobalHistogramBinarizer, BinaryBitmap, BufferedImageLuminanceSource, Binarizer}; +use crate::{ + common::GlobalHistogramBinarizer, Binarizer, BinaryBitmap, BufferedImageLuminanceSource, +}; fn getBufferedImage(fileName: &str) -> DynamicImage { let path = format!("test_resources/blackbox/rssexpandedstacked-2/{fileName}"); @@ -36,7 +38,9 @@ fn getBufferedImage(fileName: &str) -> DynamicImage { image::open(path).expect("load image") } -pub(crate) fn getBinaryBitmap(fileName: &str) -> BinaryBitmap> { +pub(crate) fn getBinaryBitmap( + fileName: &str, +) -> BinaryBitmap> { let bufferedImage = getBufferedImage(fileName); BinaryBitmap::new(GlobalHistogramBinarizer::new( diff --git a/tests/common/abstract_black_box_test_case.rs b/tests/common/abstract_black_box_test_case.rs index ee69eab..b0f7d1b 100644 --- a/tests/common/abstract_black_box_test_case.rs +++ b/tests/common/abstract_black_box_test_case.rs @@ -25,7 +25,12 @@ use std::{ }; use encoding::Encoding; -use rxing::{common::{HybridBinarizer, Result}, pdf417::PDF417RXingResultMetadata, BarcodeFormat, BinaryBitmap, BufferedImageLuminanceSource, DecodeHintType, DecodeHintValue, RXingResultMetadataType, RXingResultMetadataValue, Reader, Binarizer}; +use rxing::{ + common::{HybridBinarizer, Result}, + pdf417::PDF417RXingResultMetadata, + BarcodeFormat, Binarizer, BinaryBitmap, BufferedImageLuminanceSource, DecodeHintType, + DecodeHintValue, RXingResultMetadataType, RXingResultMetadataValue, Reader, +}; use super::TestRXingResult; @@ -254,21 +259,23 @@ impl AbstractBlackBoxTestCase { // drop(f); // Self::rotate_image(&image, rotation).save("test_image.png").unwrap(); // } - - if let Ok(decoded) = self.decode( + match self.decode( &mut bitmap, rotation, &expected_text, &expected_metadata, false, ) { - if decoded { - passed_counts[x] += 1; - } else { - misread_counts[x] += 1; + Ok(decoded) => { + if decoded { + passed_counts[x] += 1; + } else { + misread_counts[x] += 1; + } + } + Err(e) => { + log::fine(format!("could not read at rotation {rotation}: {e:?}")); } - } else { - log::fine(format!("could not read at rotation {rotation}")); } // try { // if (decode(bitmap, rotation, expectedText, expectedMetadata, false)) { @@ -279,20 +286,23 @@ impl AbstractBlackBoxTestCase { // } catch (ReaderException ignored) { // log::fine(format!("could not read at rotation {}", rotation)); // } - if let Ok(decoded) = self.decode( + match self.decode( &mut bitmap, rotation, &expected_text, &expected_metadata, true, ) { - if decoded { - try_harder_counts[x] += 1; - } else { - try_harder_misread_counts[x] += 1; + Ok(decoded) => { + if decoded { + try_harder_counts[x] += 1; + } else { + try_harder_misread_counts[x] += 1; + } + } + Err(e) => { + log::fine(format!("could not read at rotation {rotation} w/TH: {e:?}")); } - } else { - log::fine(format!("could not read at rotation {rotation} w/TH")); } // try { // if (decode(bitmap, rotation, expectedText, expectedMetadata, true)) { diff --git a/tests/common/pdf_417_multiimage_span.rs b/tests/common/pdf_417_multiimage_span.rs index cbf8b21..7578206 100644 --- a/tests/common/pdf_417_multiimage_span.rs +++ b/tests/common/pdf_417_multiimage_span.rs @@ -24,7 +24,13 @@ use std::{ }; use encoding::Encoding; -use rxing::{common::{HybridBinarizer, Result}, multi::MultipleBarcodeReader, pdf417::PDF417RXingResultMetadata, BarcodeFormat, BinaryBitmap, BufferedImageLuminanceSource, DecodeHintType, DecodeHintValue, RXingResult, RXingResultMetadataType, RXingResultMetadataValue, Reader, Binarizer}; +use rxing::{ + common::{HybridBinarizer, Result}, + multi::MultipleBarcodeReader, + pdf417::PDF417RXingResultMetadata, + BarcodeFormat, Binarizer, BinaryBitmap, BufferedImageLuminanceSource, DecodeHintType, + DecodeHintValue, RXingResult, RXingResultMetadataType, RXingResultMetadataValue, Reader, +}; use super::TestRXingResult; @@ -174,8 +180,7 @@ impl PDF417MultiImageSpanAbstractBlackBoxTest let rotation: f32 = self.test_rxing_results.get(x).expect("ok").get_rotation(); let rotated_image = Self::rotate_image(&image, rotation); let source = BufferedImageLuminanceSource::new(rotated_image); - let mut bitmap = - BinaryBitmap::new(HybridBinarizer::new(source)); + let mut bitmap = BinaryBitmap::new(HybridBinarizer::new(source)); if let Ok(res) = Self::decode_pdf417(&mut bitmap, false, &mut self.barcode_reader)