From d0364fc9ff43ea625bad4fa81ea5a1bfa62a07ba Mon Sep 17 00:00:00 2001 From: dswitkin Date: Wed, 9 Jul 2008 20:15:53 +0000 Subject: [PATCH] All the positive test cases now track normal and try harder success rates separately. This lets us monitor regressions separately, and gives an idea of how much better try harder actually is. git-svn-id: http://zxing.googlecode.com/svn/trunk@506 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../common/AbstractBlackBoxTestCase.java | 72 ++++++++++--------- .../DataMatrixBlackBox1TestCase.java | 2 +- .../zxing/oned/Code128BlackBox1TestCase.java | 4 +- .../zxing/oned/Code128BlackBox2TestCase.java | 4 +- .../zxing/oned/Code39BlackBox1TestCase.java | 4 +- .../zxing/oned/Code39BlackBox3TestCase.java | 4 +- .../oned/Code39ExtendedBlackBox2TestCase.java | 4 +- .../zxing/oned/EAN13BlackBox1TestCase.java | 4 +- .../zxing/oned/EAN13BlackBox2TestCase.java | 4 +- .../zxing/oned/EAN8BlackBox1TestCase.java | 4 +- .../zxing/oned/UPCABlackBox1TestCase.java | 4 +- .../zxing/oned/UPCABlackBox2TestCase.java | 4 +- .../zxing/oned/UPCEBlackBox1TestCase.java | 4 +- .../zxing/qrcode/QRCodeBlackBox1TestCase.java | 8 +-- .../zxing/qrcode/QRCodeBlackBox2TestCase.java | 8 +-- 15 files changed, 71 insertions(+), 63 deletions(-) diff --git a/core/test/src/com/google/zxing/common/AbstractBlackBoxTestCase.java b/core/test/src/com/google/zxing/common/AbstractBlackBoxTestCase.java index e2b56311..eaa24630 100644 --- a/core/test/src/com/google/zxing/common/AbstractBlackBoxTestCase.java +++ b/core/test/src/com/google/zxing/common/AbstractBlackBoxTestCase.java @@ -60,14 +60,20 @@ public abstract class AbstractBlackBoxTestCase extends TestCase { private static class TestResult { private final int mustPassCount; + private final int tryHarderCount; private final float rotation; - TestResult(int mustPassCount, float rotation) { + + TestResult(int mustPassCount, int tryHarderCount, float rotation) { this.mustPassCount = mustPassCount; + this.tryHarderCount = tryHarderCount; this.rotation = rotation; } public int getMustPassCount() { return mustPassCount; } + public int getTryHarderCount() { + return tryHarderCount; + } public float getRotation() { return rotation; } @@ -91,10 +97,11 @@ public abstract class AbstractBlackBoxTestCase extends TestCase { * Adds a new test for the current directory of images. * * @param mustPassCount The number of images which must decode for the test to pass. + * @param tryHarderCount The number of images which must pass using the try harder flag. * @param rotation The rotation in degrees clockwise to use for this test. */ - protected void addTest(int mustPassCount, float rotation) { - testResults.add(new TestResult(mustPassCount, rotation)); + protected void addTest(int mustPassCount, int tryHarderCount, float rotation) { + testResults.add(new TestResult(mustPassCount, tryHarderCount, rotation)); } protected File[] getImageFiles() { @@ -110,7 +117,9 @@ public abstract class AbstractBlackBoxTestCase extends TestCase { assertFalse(testResults.isEmpty()); File[] imageFiles = getImageFiles(); - int[] passedCounts = new int[testResults.size()]; + int testCount = testResults.size(); + int[] passedCounts = new int[testCount]; + int[] tryHarderCounts = new int[testCount]; for (File testImage : imageFiles) { System.out.println("Starting " + testImage.getAbsolutePath()); @@ -121,60 +130,59 @@ public abstract class AbstractBlackBoxTestCase extends TestCase { testImageFileName.substring(0, testImageFileName.indexOf('.')) + ".txt"); String expectedText = readFileAsString(expectedTextFile); - for (int x = 0; x < testResults.size(); x++) { - if (doTestOneImage(image, testResults.get(x).getRotation(), expectedText)) { + for (int x = 0; x < testCount; x++) { + float rotation = testResults.get(x).getRotation(); + BufferedImage rotatedImage = rotateImage(image, rotation); + MonochromeBitmapSource source = new BufferedImageMonochromeBitmapSource(rotatedImage); + if (decode(source, rotation, expectedText, false)) { passedCounts[x]++; } + if (decode(source, rotation, expectedText, true)) { + tryHarderCounts[x]++; + } } } - for (int x = 0; x < testResults.size(); x++) { - System.out.println("Rotation " + testResults.get(x).getRotation() + " degrees: " + passedCounts[x] + - " of " + imageFiles.length + " images passed (" + testResults.get(x).getMustPassCount() + + for (int x = 0; x < testCount; x++) { + System.out.println("Rotation " + testResults.get(x).getRotation() + " degrees:"); + System.out.println(" " + passedCounts[x] + " of " + imageFiles.length + " images passed (" + + testResults.get(x).getMustPassCount() + " required)"); + System.out.println(" " + tryHarderCounts[x] + " of " + imageFiles.length + + " images passed with try harder (" + testResults.get(x).getTryHarderCount() + " required)"); - assertTrue("Rotation " + testResults.get(x).getRotation() + " degrees: Too many images failed", + assertTrue("Rotation " + testResults.get(x).getRotation() + + " degrees: Too many images failed", passedCounts[x] >= testResults.get(x).getMustPassCount()); + assertTrue("Try harder, Rotation " + testResults.get(x).getRotation() + + " degrees: Too many images failed", + tryHarderCounts[x] >= testResults.get(x).getTryHarderCount()); } } - private boolean doTestOneImage(BufferedImage image, float rotationInDegrees, String expectedText) { - BufferedImage rotatedImage = rotateImage(image, rotationInDegrees); - MonochromeBitmapSource source = new BufferedImageMonochromeBitmapSource(rotatedImage); + private boolean decode(MonochromeBitmapSource source, float rotation, String expectedText, + boolean tryHarder) { Result result; + String suffix = " (" + (tryHarder ? "try harder, " : "") + "rotation: " + rotation + ')'; + try { - result = barcodeReader.decode(source); + result = barcodeReader.decode(source, tryHarder ? TRY_HARDER_HINT : null); } catch (ReaderException re) { - System.out.println(re + " (rotation: " + rotationInDegrees + ')'); + System.out.println(re + suffix); return false; } if (!expectedFormat.equals(result.getBarcodeFormat())) { System.out.println("Format mismatch: expected '" + expectedFormat + "' but got '" + - result.getBarcodeFormat() + "' (rotation: " + rotationInDegrees + ')'); + result.getBarcodeFormat() + "'" + suffix); return false; } String resultText = result.getText(); if (!expectedText.equals(resultText)) { System.out.println("Mismatch: expected '" + expectedText + "' but got '" + resultText + - "' (rotation: " + rotationInDegrees + ')'); + "'" + suffix); return false; } - - // Try "try harder" mode - try { - result = barcodeReader.decode(source, TRY_HARDER_HINT); - } catch (ReaderException re) { - fail("Normal mode succeeded but \"try harder\" failed (rotation: " + rotationInDegrees + ')'); - return false; - } - if (!expectedFormat.equals(result.getBarcodeFormat())) { - System.out.println("Try Harder Format mismatch: expected '" + expectedFormat + "' but got '" + - result.getBarcodeFormat() + "' (rotation: " + rotationInDegrees + ')'); - } else if (!expectedText.equals(resultText)) { - System.out.println("Try Harder Mismatch: expected '" + expectedText + "' but got '" + - resultText + "' (rotation: " + rotationInDegrees + ')'); - } return true; } diff --git a/core/test/src/com/google/zxing/datamatrix/DataMatrixBlackBox1TestCase.java b/core/test/src/com/google/zxing/datamatrix/DataMatrixBlackBox1TestCase.java index a8f289a6..2214374a 100644 --- a/core/test/src/com/google/zxing/datamatrix/DataMatrixBlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/datamatrix/DataMatrixBlackBox1TestCase.java @@ -30,7 +30,7 @@ public final class DataMatrixBlackBox1TestCase extends AbstractBlackBoxTestCase public DataMatrixBlackBox1TestCase() { // TODO use MultiFormatReader here once Data Matrix decoder is done super(new File("test/data/blackbox/datamatrix-1"), new DataMatrixReader(), BarcodeFormat.DATAMATRIX); - addTest(7, 0.0f); + addTest(7, 7, 0.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/Code128BlackBox1TestCase.java b/core/test/src/com/google/zxing/oned/Code128BlackBox1TestCase.java index 907967d7..bb115aaf 100644 --- a/core/test/src/com/google/zxing/oned/Code128BlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/oned/Code128BlackBox1TestCase.java @@ -29,8 +29,8 @@ public final class Code128BlackBox1TestCase extends AbstractBlackBoxTestCase { public Code128BlackBox1TestCase() { super(new File("test/data/blackbox/code128-1"), new MultiFormatReader(), BarcodeFormat.CODE_128); - addTest(5, 0.0f); - addTest(5, 180.0f); + addTest(5, 5, 0.0f); + addTest(5, 5, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/Code128BlackBox2TestCase.java b/core/test/src/com/google/zxing/oned/Code128BlackBox2TestCase.java index 3c04ff3f..a42338a8 100644 --- a/core/test/src/com/google/zxing/oned/Code128BlackBox2TestCase.java +++ b/core/test/src/com/google/zxing/oned/Code128BlackBox2TestCase.java @@ -29,8 +29,8 @@ public final class Code128BlackBox2TestCase extends AbstractBlackBoxTestCase { public Code128BlackBox2TestCase() { super(new File("test/data/blackbox/code128-2"), new MultiFormatReader(), BarcodeFormat.CODE_128); - addTest(33, 0.0f); - addTest(34, 180.0f); + addTest(33, 39, 0.0f); + addTest(34, 37, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/Code39BlackBox1TestCase.java b/core/test/src/com/google/zxing/oned/Code39BlackBox1TestCase.java index b120935f..0800e73b 100644 --- a/core/test/src/com/google/zxing/oned/Code39BlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/oned/Code39BlackBox1TestCase.java @@ -29,8 +29,8 @@ public final class Code39BlackBox1TestCase extends AbstractBlackBoxTestCase { public Code39BlackBox1TestCase() { super(new File("test/data/blackbox/code39-1"), new MultiFormatReader(), BarcodeFormat.CODE_39); - addTest(4, 0.0f); - addTest(4, 180.0f); + addTest(4, 4, 0.0f); + addTest(4, 4, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/Code39BlackBox3TestCase.java b/core/test/src/com/google/zxing/oned/Code39BlackBox3TestCase.java index d898413a..b60497f9 100644 --- a/core/test/src/com/google/zxing/oned/Code39BlackBox3TestCase.java +++ b/core/test/src/com/google/zxing/oned/Code39BlackBox3TestCase.java @@ -29,8 +29,8 @@ public final class Code39BlackBox3TestCase extends AbstractBlackBoxTestCase { public Code39BlackBox3TestCase() { super(new File("test/data/blackbox/code39-3"), new MultiFormatReader(), BarcodeFormat.CODE_39); - addTest(17, 0.0f); - addTest(17, 180.0f); + addTest(17, 17, 0.0f); + addTest(17, 17, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/Code39ExtendedBlackBox2TestCase.java b/core/test/src/com/google/zxing/oned/Code39ExtendedBlackBox2TestCase.java index a2a474f3..f5656ad5 100644 --- a/core/test/src/com/google/zxing/oned/Code39ExtendedBlackBox2TestCase.java +++ b/core/test/src/com/google/zxing/oned/Code39ExtendedBlackBox2TestCase.java @@ -28,8 +28,8 @@ public final class Code39ExtendedBlackBox2TestCase extends AbstractBlackBoxTestC public Code39ExtendedBlackBox2TestCase() { super(new File("test/data/blackbox/code39-2"), new Code39Reader(false, true), BarcodeFormat.CODE_39); - addTest(2, 0.0f); - addTest(2, 180.0f); + addTest(2, 2, 0.0f); + addTest(2, 2, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/EAN13BlackBox1TestCase.java b/core/test/src/com/google/zxing/oned/EAN13BlackBox1TestCase.java index 3c02c028..1113c16a 100644 --- a/core/test/src/com/google/zxing/oned/EAN13BlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/oned/EAN13BlackBox1TestCase.java @@ -29,8 +29,8 @@ public final class EAN13BlackBox1TestCase extends AbstractBlackBoxTestCase { public EAN13BlackBox1TestCase() { super(new File("test/data/blackbox/ean13-1"), new MultiFormatReader(), BarcodeFormat.EAN_13); - addTest(26, 0.0f); - addTest(24, 180.0f); + addTest(26, 29, 0.0f); + addTest(24, 29, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/EAN13BlackBox2TestCase.java b/core/test/src/com/google/zxing/oned/EAN13BlackBox2TestCase.java index 89844ddf..a96646e6 100644 --- a/core/test/src/com/google/zxing/oned/EAN13BlackBox2TestCase.java +++ b/core/test/src/com/google/zxing/oned/EAN13BlackBox2TestCase.java @@ -29,8 +29,8 @@ public final class EAN13BlackBox2TestCase extends AbstractBlackBoxTestCase { public EAN13BlackBox2TestCase() { super(new File("test/data/blackbox/ean13-2"), new MultiFormatReader(), BarcodeFormat.EAN_13); - addTest(1, 0.0f); - addTest(1, 180.0f); + addTest(1, 1, 0.0f); + addTest(1, 1, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/EAN8BlackBox1TestCase.java b/core/test/src/com/google/zxing/oned/EAN8BlackBox1TestCase.java index e8e2b993..f018dea1 100644 --- a/core/test/src/com/google/zxing/oned/EAN8BlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/oned/EAN8BlackBox1TestCase.java @@ -29,8 +29,8 @@ public final class EAN8BlackBox1TestCase extends AbstractBlackBoxTestCase { public EAN8BlackBox1TestCase() { super(new File("test/data/blackbox/ean8-1"), new MultiFormatReader(), BarcodeFormat.EAN_8); - addTest(8, 0.0f); - addTest(8, 180.0f); + addTest(8, 8, 0.0f); + addTest(8, 8, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/UPCABlackBox1TestCase.java b/core/test/src/com/google/zxing/oned/UPCABlackBox1TestCase.java index 1414f574..48663bd6 100644 --- a/core/test/src/com/google/zxing/oned/UPCABlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/oned/UPCABlackBox1TestCase.java @@ -29,8 +29,8 @@ public final class UPCABlackBox1TestCase extends AbstractBlackBoxTestCase { public UPCABlackBox1TestCase() { super(new File("test/data/blackbox/upca-1"), new MultiFormatReader(), BarcodeFormat.UPC_A); - addTest(15, 0.0f); - addTest(16, 180.0f); + addTest(15, 17, 0.0f); + addTest(16, 19, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/oned/UPCABlackBox2TestCase.java b/core/test/src/com/google/zxing/oned/UPCABlackBox2TestCase.java index 502d1208..60c387b8 100644 --- a/core/test/src/com/google/zxing/oned/UPCABlackBox2TestCase.java +++ b/core/test/src/com/google/zxing/oned/UPCABlackBox2TestCase.java @@ -29,8 +29,8 @@ public final class UPCABlackBox2TestCase extends AbstractBlackBoxTestCase { public UPCABlackBox2TestCase() { super(new File("test/data/blackbox/upca-2"), new MultiFormatReader(), BarcodeFormat.UPC_A); - addTest(26, 0.0f); - addTest(25, 180.0f); + addTest(26, 35, 0.0f); + addTest(25, 35, 180.0f); } } diff --git a/core/test/src/com/google/zxing/oned/UPCEBlackBox1TestCase.java b/core/test/src/com/google/zxing/oned/UPCEBlackBox1TestCase.java index fb5ccb5b..7d78e053 100644 --- a/core/test/src/com/google/zxing/oned/UPCEBlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/oned/UPCEBlackBox1TestCase.java @@ -29,8 +29,8 @@ public final class UPCEBlackBox1TestCase extends AbstractBlackBoxTestCase { public UPCEBlackBox1TestCase() { super(new File("test/data/blackbox/upce-1"), new MultiFormatReader(), BarcodeFormat.UPC_E); - addTest(3, 0.0f); - addTest(3, 180.0f); + addTest(3, 3, 0.0f); + addTest(3, 3, 180.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java index 3a278676..c181453a 100644 --- a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java +++ b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java @@ -29,10 +29,10 @@ public final class QRCodeBlackBox1TestCase extends AbstractBlackBoxTestCase { public QRCodeBlackBox1TestCase() { super(new File("test/data/blackbox/qrcode-1"), new MultiFormatReader(), BarcodeFormat.QR_CODE); - addTest(18, 0.0f); - addTest(14, 90.0f); - addTest(18, 180.0f); - addTest(14, 270.0f); + addTest(18, 18, 0.0f); + addTest(14, 14, 90.0f); + addTest(18, 18, 180.0f); + addTest(14, 14, 270.0f); } } \ No newline at end of file diff --git a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java index ffe3485b..ae99176a 100644 --- a/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java +++ b/core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java @@ -29,10 +29,10 @@ public final class QRCodeBlackBox2TestCase extends AbstractBlackBoxTestCase { public QRCodeBlackBox2TestCase() { super(new File("test/data/blackbox/qrcode-2"), new MultiFormatReader(), BarcodeFormat.QR_CODE); - addTest(10, 0.0f); - addTest(6, 90.0f); - addTest(9, 180.0f); - addTest(7, 270.0f); + addTest(10, 10, 0.0f); + addTest(6, 6, 90.0f); + addTest(9, 9, 180.0f); + addTest(7, 7, 270.0f); } } \ No newline at end of file -- 2.20.1