diff --git a/src/oned/EAN13Reader.java b/src/oned/EAN13Reader.java
deleted file mode 100644
index c537eac..0000000
--- a/src/oned/EAN13Reader.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2008 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.oned;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.NotFoundException;
-import com.google.zxing.common.BitArray;
-
-/**
- *
Implements decoding of the EAN-13 format.
- *
- * @author dswitkin@google.com (Daniel Switkin)
- * @author Sean Owen
- * @author alasdair@google.com (Alasdair Mackintosh)
- */
-public final class EAN13Reader extends UPCEANReader {
-
- // For an EAN-13 barcode, the first digit is represented by the parities used
- // to encode the next six digits, according to the table below. For example,
- // if the barcode is 5 123456 789012 then the value of the first digit is
- // signified by using odd for '1', even for '2', even for '3', odd for '4',
- // odd for '5', and even for '6'. See http://en.wikipedia.org/wiki/EAN-13
- //
- // Parity of next 6 digits
- // Digit 0 1 2 3 4 5
- // 0 Odd Odd Odd Odd Odd Odd
- // 1 Odd Odd Even Odd Even Even
- // 2 Odd Odd Even Even Odd Even
- // 3 Odd Odd Even Even Even Odd
- // 4 Odd Even Odd Odd Even Even
- // 5 Odd Even Even Odd Odd Even
- // 6 Odd Even Even Even Odd Odd
- // 7 Odd Even Odd Even Odd Even
- // 8 Odd Even Odd Even Even Odd
- // 9 Odd Even Even Odd Even Odd
- //
- // Note that the encoding for '0' uses the same parity as a UPC barcode. Hence
- // a UPC barcode can be converted to an EAN-13 barcode by prepending a 0.
- //
- // The encoding is represented by the following array, which is a bit pattern
- // using Odd = 0 and Even = 1. For example, 5 is represented by:
- //
- // Odd Even Even Odd Odd Even
- // in binary:
- // 0 1 1 0 0 1 == 0x19
- //
- static final int[] FIRST_DIGIT_ENCODINGS = {
- 0x00, 0x0B, 0x0D, 0xE, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A
- };
-
- private final int[] decodeMiddleCounters;
-
- public EAN13Reader() {
- decodeMiddleCounters = new int[4];
- }
-
- @Override
- protected int decodeMiddle(BitArray row,
- int[] startRange,
- StringBuilder resultString) throws NotFoundException {
- int[] counters = decodeMiddleCounters;
- counters[0] = 0;
- counters[1] = 0;
- counters[2] = 0;
- counters[3] = 0;
- int end = row.getSize();
- int rowOffset = startRange[1];
-
- int lgPatternFound = 0;
-
- for (int x = 0; x < 6 && rowOffset < end; x++) {
- int bestMatch = decodeDigit(row, counters, rowOffset, L_AND_G_PATTERNS);
- resultString.append((char) ('0' + bestMatch % 10));
- for (int counter : counters) {
- rowOffset += counter;
- }
- if (bestMatch >= 10) {
- lgPatternFound |= 1 << (5 - x);
- }
- }
-
- determineFirstDigit(resultString, lgPatternFound);
-
- int[] middleRange = findGuardPattern(row, rowOffset, true, MIDDLE_PATTERN);
- rowOffset = middleRange[1];
-
- for (int x = 0; x < 6 && rowOffset < end; x++) {
- int bestMatch = decodeDigit(row, counters, rowOffset, L_PATTERNS);
- resultString.append((char) ('0' + bestMatch));
- for (int counter : counters) {
- rowOffset += counter;
- }
- }
-
- return rowOffset;
- }
-
- @Override
- BarcodeFormat getBarcodeFormat() {
- return BarcodeFormat.EAN_13;
- }
-
- /**
- * Based on pattern of odd-even ('L' and 'G') patterns used to encoded the explicitly-encoded
- * digits in a barcode, determines the implicitly encoded first digit and adds it to the
- * result string.
- *
- * @param resultString string to insert decoded first digit into
- * @param lgPatternFound int whose bits indicates the pattern of odd/even L/G patterns used to
- * encode digits
- * @throws NotFoundException if first digit cannot be determined
- */
- private static void determineFirstDigit(StringBuilder resultString, int lgPatternFound)
- throws NotFoundException {
- for (int d = 0; d < 10; d++) {
- if (lgPatternFound == FIRST_DIGIT_ENCODINGS[d]) {
- resultString.insert(0, (char) ('0' + d));
- return;
- }
- }
- throw NotFoundException.getNotFoundInstance();
- }
-
-}
diff --git a/src/oned/ean_13_reader.rs b/src/oned/ean_13_reader.rs
new file mode 100644
index 0000000..4306f98
--- /dev/null
+++ b/src/oned/ean_13_reader.rs
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2008 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+use one_d_reader_derive::{EANReader, OneDReader};
+
+use super::UPCEANReader;
+
+use super::upc_ean_reader;
+use super::OneDReader;
+
+use crate::BarcodeFormat;
+use crate::Exceptions;
+
+/**
+ * Implements decoding of the EAN-13 format.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ * @author Sean Owen
+ * @author alasdair@google.com (Alasdair Mackintosh)
+ */
+#[derive(OneDReader, EANReader)]
+pub struct EAN13Reader;
+impl UPCEANReader for EAN13Reader {
+ fn getBarcodeFormat(&self) -> crate::BarcodeFormat {
+ BarcodeFormat::EAN_13
+ }
+
+ fn decodeMiddle(
+ &self,
+ row: &crate::common::BitArray,
+ startRange: &[usize; 2],
+ resultString: &mut String,
+ ) -> Result {
+ let mut counters = [0_u32; 4]; //decodeMiddleCounters;
+ // counters[0] = 0;
+ // counters[1] = 0;
+ // counters[2] = 0;
+ // counters[3] = 0;
+ let end = row.getSize();
+ let mut rowOffset = startRange[1];
+
+ let mut lgPatternFound = 0;
+
+ let mut x = 0;
+
+ while x < 6 && rowOffset < end {
+ // for (int x = 0; x < 6 && rowOffset < end; x++) {
+ let bestMatch = Self::decodeDigit(
+ row,
+ &mut counters,
+ rowOffset,
+ &upc_ean_reader::L_AND_G_PATTERNS,
+ )?;
+ resultString.push(char::from_u32('0' as u32 + bestMatch as u32 % 10).unwrap());
+ // for (int counter : counters) {
+ // rowOffset += counter;
+ // }
+ rowOffset += counters.iter().sum::() as usize;
+ if bestMatch >= 10 {
+ lgPatternFound |= 1 << (5 - x);
+ }
+
+ x += 1;
+ }
+
+ Self::determineFirstDigit(resultString, lgPatternFound)?;
+
+ let middleRange =
+ Self::findGuardPattern(row, rowOffset, true, &upc_ean_reader::MIDDLE_PATTERN)?;
+ rowOffset = middleRange[1];
+
+ let mut x = 0;
+
+ while x < 6 && rowOffset < end {
+ // for (int x = 0; x < 6 && rowOffset < end; x++) {
+ let bestMatch =
+ Self::decodeDigit(row, &mut counters, rowOffset, &upc_ean_reader::L_PATTERNS)?;
+ resultString.push(char::from_u32('0' as u32 + bestMatch as u32).unwrap());
+ // for (int counter : counters) {
+ // rowOffset += counter;
+ // }
+ rowOffset += counters.iter().sum::() as usize;
+
+ x += 1;
+ }
+
+ Ok(rowOffset)
+ }
+}
+impl EAN13Reader {
+ // For an EAN-13 barcode, the first digit is represented by the parities used
+ // to encode the next six digits, according to the table below. For example,
+ // if the barcode is 5 123456 789012 then the value of the first digit is
+ // signified by using odd for '1', even for '2', even for '3', odd for '4',
+ // odd for '5', and even for '6'. See http://en.wikipedia.org/wiki/EAN-13
+ //
+ // Parity of next 6 digits
+ // Digit 0 1 2 3 4 5
+ // 0 Odd Odd Odd Odd Odd Odd
+ // 1 Odd Odd Even Odd Even Even
+ // 2 Odd Odd Even Even Odd Even
+ // 3 Odd Odd Even Even Even Odd
+ // 4 Odd Even Odd Odd Even Even
+ // 5 Odd Even Even Odd Odd Even
+ // 6 Odd Even Even Even Odd Odd
+ // 7 Odd Even Odd Even Odd Even
+ // 8 Odd Even Odd Even Even Odd
+ // 9 Odd Even Even Odd Even Odd
+ //
+ // Note that the encoding for '0' uses the same parity as a UPC barcode. Hence
+ // a UPC barcode can be converted to an EAN-13 barcode by prepending a 0.
+ //
+ // The encoding is represented by the following array, which is a bit pattern
+ // using Odd = 0 and Even = 1. For example, 5 is represented by:
+ //
+ // Odd Even Even Odd Odd Even
+ // in binary:
+ // 0 1 1 0 0 1 == 0x19
+ //
+ const FIRST_DIGIT_ENCODINGS: [usize; 10] =
+ [0x00, 0x0B, 0x0D, 0xE, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A];
+
+ /**
+ * Based on pattern of odd-even ('L' and 'G') patterns used to encoded the explicitly-encoded
+ * digits in a barcode, determines the implicitly encoded first digit and adds it to the
+ * result string.
+ *
+ * @param resultString string to insert decoded first digit into
+ * @param lgPatternFound int whose bits indicates the pattern of odd/even L/G patterns used to
+ * encode digits
+ * @throws NotFoundException if first digit cannot be determined
+ */
+ fn determineFirstDigit(
+ resultString: &mut String,
+ lgPatternFound: usize,
+ ) -> Result<(), Exceptions> {
+ for d in 0..10 {
+ // for (int d = 0; d < 10; d++) {
+ if lgPatternFound == Self::FIRST_DIGIT_ENCODINGS[d] {
+ resultString.insert(0, char::from_u32('0' as u32 + d as u32).unwrap());
+ return Ok(());
+ }
+ }
+ return Err(Exceptions::NotFoundException("".to_owned()));
+ }
+}
diff --git a/src/oned/ean_8_reader.rs b/src/oned/ean_8_reader.rs
index a89d0e1..01bc068 100644
--- a/src/oned/ean_8_reader.rs
+++ b/src/oned/ean_8_reader.rs
@@ -41,10 +41,10 @@ impl UPCEANReader for EAN8Reader {
resultString: &mut String,
) -> Result {
let mut counters = [0_u32; 4]; //decodeMiddleCounters;
- // counters[0] = 0;
- // counters[1] = 0;
- // counters[2] = 0;
- // counters[3] = 0;
+ // counters[0] = 0;
+ // counters[1] = 0;
+ // counters[2] = 0;
+ // counters[3] = 0;
let end = row.getSize();
let mut rowOffset = startRange[1];
diff --git a/src/oned/mod.rs b/src/oned/mod.rs
index 928e467..7830f1d 100644
--- a/src/oned/mod.rs
+++ b/src/oned/mod.rs
@@ -37,3 +37,6 @@ pub use upc_ean_extension_support::*;
mod ean_8_reader;
pub use ean_8_reader::*;
+
+mod ean_13_reader;
+pub use ean_13_reader::*;
diff --git a/src/oned/upc_ean_reader.rs b/src/oned/upc_ean_reader.rs
index 6221ef7..ee4b44d 100644
--- a/src/oned/upc_ean_reader.rs
+++ b/src/oned/upc_ean_reader.rs
@@ -347,7 +347,12 @@ pub trait UPCEANReader: OneDReader {
let check_against = &s[..length - 1]; //s.subSequence(0, length - 1);
let calculated_checksum = Self::getStandardUPCEANChecksum(check_against)?;
- Ok( calculated_checksum == if check { char_in_question.to_digit(10).unwrap() } else { u32::MAX })
+ Ok(calculated_checksum
+ == if check {
+ char_in_question.to_digit(10).unwrap()
+ } else {
+ u32::MAX
+ })
}
fn getStandardUPCEANChecksum(s: &str) -> Result {
@@ -395,7 +400,13 @@ pub trait UPCEANReader: OneDReader {
where
Self: Sized,
{
- Self::findGuardPatternWithCounters(row, rowOffset, whiteFirst, pattern, &mut vec![0u32; pattern.len()])
+ Self::findGuardPatternWithCounters(
+ row,
+ rowOffset,
+ whiteFirst,
+ pattern,
+ &mut vec![0u32; pattern.len()],
+ )
}
/**
@@ -525,7 +536,7 @@ pub trait UPCEANReader: OneDReader {
) -> Result;
}
-pub struct StandIn;
+pub(crate) struct StandIn;
impl UPCEANReader for StandIn {
fn getBarcodeFormat(&self) -> BarcodeFormat {
todo!()
diff --git a/tests/EAN13BlackBox1TestCase.java b/tests/EAN13BlackBox1TestCase.java
deleted file mode 100644
index 022b454..0000000
--- a/tests/EAN13BlackBox1TestCase.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2008 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.oned;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.MultiFormatReader;
-import com.google.zxing.common.AbstractBlackBoxTestCase;
-
-/**
- * @author Sean Owen
- */
-public final class EAN13BlackBox1TestCase extends AbstractBlackBoxTestCase {
-
- public EAN13BlackBox1TestCase() {
- super("src/test/resources/blackbox/ean13-1", new MultiFormatReader(), BarcodeFormat.EAN_13);
- addTest(30, 32, 0.0f);
- addTest(27, 32, 180.0f);
- }
-
-}
diff --git a/tests/EAN13BlackBox2TestCase.java b/tests/EAN13BlackBox2TestCase.java
deleted file mode 100644
index f1768af..0000000
--- a/tests/EAN13BlackBox2TestCase.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2008 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.oned;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.MultiFormatReader;
-import com.google.zxing.common.AbstractBlackBoxTestCase;
-
-/**
- * This is a set of mobile image taken at 480x360 with difficult lighting.
- *
- * @author dswitkin@google.com (Daniel Switkin)
- */
-public final class EAN13BlackBox2TestCase extends AbstractBlackBoxTestCase {
-
- public EAN13BlackBox2TestCase() {
- super("src/test/resources/blackbox/ean13-2", new MultiFormatReader(), BarcodeFormat.EAN_13);
- addTest(12, 17, 0, 1, 0.0f);
- addTest(11, 17, 0, 1, 180.0f);
- }
-
-}
diff --git a/tests/EAN13BlackBox3TestCase.java b/tests/EAN13BlackBox3TestCase.java
deleted file mode 100644
index edd544c..0000000
--- a/tests/EAN13BlackBox3TestCase.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2008 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.oned;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.MultiFormatReader;
-import com.google.zxing.common.AbstractBlackBoxTestCase;
-
-/**
- * @author dswitkin@google.com (Daniel Switkin)
- */
-public final class EAN13BlackBox3TestCase extends AbstractBlackBoxTestCase {
-
- public EAN13BlackBox3TestCase() {
- super("src/test/resources/blackbox/ean13-3", new MultiFormatReader(), BarcodeFormat.EAN_13);
- addTest(53, 55, 0.0f);
- addTest(55, 55, 180.0f);
- }
-
-}
diff --git a/tests/EAN13BlackBox4TestCase.java b/tests/EAN13BlackBox4TestCase.java
deleted file mode 100644
index 89e0db7..0000000
--- a/tests/EAN13BlackBox4TestCase.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2009 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.oned;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.MultiFormatReader;
-import com.google.zxing.common.AbstractBlackBoxTestCase;
-
-/**
- * A very difficult set of images taken with extreme shadows and highlights.
- * @author dswitkin@google.com (Daniel Switkin)
- */
-public final class EAN13BlackBox4TestCase extends AbstractBlackBoxTestCase {
-
- public EAN13BlackBox4TestCase() {
- super("src/test/resources/blackbox/ean13-4", new MultiFormatReader(), BarcodeFormat.EAN_13);
- addTest(6, 13, 1, 1, 0.0f);
- addTest(7, 13, 1, 1, 180.0f);
- }
-
-}
diff --git a/tests/EAN13BlackBox5BlurryTestCase.java b/tests/EAN13BlackBox5BlurryTestCase.java
deleted file mode 100644
index 4281091..0000000
--- a/tests/EAN13BlackBox5BlurryTestCase.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2011 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.oned;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.MultiFormatReader;
-import com.google.zxing.common.AbstractBlackBoxTestCase;
-
-/**
- * A set of blurry images taken with a fixed-focus device.
- * @author dswitkin@google.com (Daniel Switkin)
- */
-public final class EAN13BlackBox5BlurryTestCase extends AbstractBlackBoxTestCase {
-
- public EAN13BlackBox5BlurryTestCase() {
- super("src/test/resources/blackbox/ean13-5", new MultiFormatReader(), BarcodeFormat.EAN_13);
- addTest(0, 0, 0.0f);
- addTest(0, 0, 180.0f);
- }
-
-}
diff --git a/tests/EAN8BlackBox1TestCase.rs b/tests/EAN8BlackBox1TestCase.rs
index 66d6720..9d71589 100644
--- a/tests/EAN8BlackBox1TestCase.rs
+++ b/tests/EAN8BlackBox1TestCase.rs
@@ -14,9 +14,7 @@
* limitations under the License.
*/
-use rxing::{
- BarcodeFormat, MultiFormatReader, oned::EAN8Reader,
-};
+use rxing::{oned::EAN8Reader, BarcodeFormat, MultiFormatReader};
mod common;
@@ -24,18 +22,17 @@ mod common;
* @author Sean Owen
*/
#[test]
- fn ean8_black_box1_test_case() {
+fn ean8_black_box1_test_case() {
let mut tester = common::AbstractBlackBoxTestCase::new(
- "test_resources/blackbox/ean8-1",
- // MultiFormatReader::default(),
- EAN8Reader{},
- BarcodeFormat::EAN_8,
- );
+ "test_resources/blackbox/ean8-1",
+ // MultiFormatReader::default(),
+ EAN8Reader {},
+ BarcodeFormat::EAN_8,
+ );
// super("src/test/resources/blackbox/ean8-1", new MultiFormatReader(), BarcodeFormat.EAN_8);
tester.add_test(8, 8, 0.0);
tester.add_test(8, 8, 180.0);
tester.test_black_box()
- }
-
+}
diff --git a/tests/ean_13_blackbox_tests.rs b/tests/ean_13_blackbox_tests.rs
new file mode 100644
index 0000000..486ec41
--- /dev/null
+++ b/tests/ean_13_blackbox_tests.rs
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2008 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+use rxing::{oned::EAN13Reader, BarcodeFormat, MultiFormatReader};
+
+mod common;
+
+/**
+ * @author Sean Owen
+ */
+#[test]
+fn ean13_black_box1_test_case() {
+ let mut tester = common::AbstractBlackBoxTestCase::new(
+ "test_resources/blackbox/ean13-1",
+ // MultiFormatReader::default(),
+ EAN13Reader {},
+ BarcodeFormat::EAN_13,
+ );
+
+ // super("src/test/resources/blackbox/ean13-1", new MultiFormatReader(), BarcodeFormat.EAN_13);
+ tester.add_test(30, 32, 0.0);
+ tester.add_test(27, 32, 180.0);
+
+ tester.test_black_box()
+}
+
+/**
+ * This is a set of mobile image taken at 480x360 with difficult lighting.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ */
+#[test]
+fn ean13_black_box2_test_case() {
+ let mut tester = common::AbstractBlackBoxTestCase::new(
+ "test_resources/blackbox/ean13-2",
+ // MultiFormatReader::default(),
+ EAN13Reader {},
+ BarcodeFormat::EAN_13,
+ );
+
+ // super("src/test/resources/blackbox/ean13-2", new MultiFormatReader(), BarcodeFormat.EAN_13);
+ tester.add_test_complex(12, 17, 0, 1, 0.0);
+ tester.add_test_complex(11, 17, 0, 1, 180.0);
+
+ tester.test_black_box()
+}
+
+/**
+ * @author dswitkin@google.com (Daniel Switkin)
+ */
+#[test]
+fn ean13_black_box3_test_case() {
+ let mut tester = common::AbstractBlackBoxTestCase::new(
+ "test_resources/blackbox/ean13-3",
+ // MultiFormatReader::default(),
+ EAN13Reader {},
+ BarcodeFormat::EAN_13,
+ );
+
+ // super("src/test/resources/blackbox/ean13-3", new MultiFormatReader(), BarcodeFormat.EAN_13);
+ tester.add_test(53, 55, 0.0);
+ tester.add_test(55, 55, 180.0);
+
+ tester.test_black_box()
+}
+
+/**
+ * A very difficult set of images taken with extreme shadows and highlights.
+ * @author dswitkin@google.com (Daniel Switkin)
+ */
+#[test]
+fn ean13_black_box4_test_case() {
+ let mut tester = common::AbstractBlackBoxTestCase::new(
+ "test_resources/blackbox/ean13-4",
+ // MultiFormatReader::default(),
+ EAN13Reader {},
+ BarcodeFormat::EAN_13,
+ );
+ // super("src/test/resources/blackbox/ean13-4", new MultiFormatReader(), BarcodeFormat.EAN_13);
+ tester.add_test_complex(6, 13, 1, 1, 0.0);
+ tester.add_test_complex(7, 13, 1, 1, 180.0);
+
+ tester.test_black_box()
+}
+
+/**
+ * A set of blurry images taken with a fixed-focus device.
+ * @author dswitkin@google.com (Daniel Switkin)
+ */
+#[test]
+fn ean13_black_box5_blurry_test_case() {
+ let mut tester = common::AbstractBlackBoxTestCase::new(
+ "test_resources/blackbox/ean13-5",
+ // MultiFormatReader::default(),
+ EAN13Reader {},
+ BarcodeFormat::EAN_13,
+ );
+ // super("src/test/resources/blackbox/ean13-5", new MultiFormatReader(), BarcodeFormat.EAN_13);
+ tester.add_test(0, 0, 0.0);
+ tester.add_test(0, 0, 180.0);
+
+ tester.test_black_box()
+}