diff --git a/core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java b/core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java index 0e06ac3a5..61cab98c0 100644 --- a/core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java +++ b/core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java @@ -167,8 +167,7 @@ public final class RSSExpandedReader extends AbstractRSSReader { } } - // TODO: verify sequence of finder patterns as in checkPairSequence() - if (checkChecksum()) { + if (checkChecksum() && isValidSequence(this.pairs, true)) { return this.pairs; } @@ -229,7 +228,7 @@ public final class RSSExpandedReader extends AbstractRSSReader { } this.pairs.addAll(row.getPairs()); - if (isValidSequence(this.pairs)) { + if (isValidSequence(this.pairs, false)) { if (checkChecksum()) { return this.pairs; } @@ -249,10 +248,11 @@ public final class RSSExpandedReader extends AbstractRSSReader { } // Whether the pairs form a valid finder pattern sequence, either complete or a prefix - private static boolean isValidSequence(List pairs) { + private static boolean isValidSequence(List pairs, boolean complete) { for (int[] sequence : FINDER_PATTERN_SEQUENCES) { - if (pairs.size() <= sequence.length) { + boolean sizeOk = (complete ? pairs.size() == sequence.length : pairs.size() <= sequence.length); + if (sizeOk) { boolean stop = true; for (int j = 0; j < pairs.size(); j++) { if (pairs.get(j).getFinderPattern().getValue() != sequence[j]) { diff --git a/core/src/test/java/com/google/zxing/oned/rss/expanded/RSSExpandedStackedBlackBox1TestCase.java b/core/src/test/java/com/google/zxing/oned/rss/expanded/RSSExpandedStackedBlackBox1TestCase.java index dabe8b13c..15fe3dd32 100644 --- a/core/src/test/java/com/google/zxing/oned/rss/expanded/RSSExpandedStackedBlackBox1TestCase.java +++ b/core/src/test/java/com/google/zxing/oned/rss/expanded/RSSExpandedStackedBlackBox1TestCase.java @@ -35,12 +35,11 @@ import com.google.zxing.common.AbstractBlackBoxTestCase; * stacked RSS barcodes. */ public final class RSSExpandedStackedBlackBox1TestCase extends AbstractBlackBoxTestCase { - + public RSSExpandedStackedBlackBox1TestCase() { super("src/test/resources/blackbox/rssexpandedstacked-1", new MultiFormatReader(), BarcodeFormat.RSS_EXPANDED); - addTest(59, 64, 0.0f); - addTest(59, 64, 180.0f); + addTest(60, 65, 0.0f); + addTest(60, 65, 180.0f); } } - diff --git a/core/src/test/resources/blackbox/rssexpandedstacked-1/65.png b/core/src/test/resources/blackbox/rssexpandedstacked-1/65.png new file mode 100644 index 000000000..68deddbe2 Binary files /dev/null and b/core/src/test/resources/blackbox/rssexpandedstacked-1/65.png differ diff --git a/core/src/test/resources/blackbox/rssexpandedstacked-1/65.txt b/core/src/test/resources/blackbox/rssexpandedstacked-1/65.txt new file mode 100644 index 000000000..e88ae8084 --- /dev/null +++ b/core/src/test/resources/blackbox/rssexpandedstacked-1/65.txt @@ -0,0 +1 @@ +(8110))2345672(1*813 \ No newline at end of file