public void testDecodingRowByRow()
        {
            RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

            BinaryBitmap binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpandedstacked-2/1000.png");

            int      firstRowNumber = binaryMap.Height / 3;
            BitArray firstRow       = binaryMap.getBlackRow(firstRowNumber, null);

            Assert.IsFalse(rssExpandedReader.decodeRow2pairs(firstRowNumber, firstRow));

            Assert.AreEqual(1, rssExpandedReader.Rows.Count);
            ExpandedRow firstExpandedRow = rssExpandedReader.Rows[0];

            Assert.AreEqual(firstRowNumber, firstExpandedRow.RowNumber);

            Assert.AreEqual(2, firstExpandedRow.Pairs.Count);

            firstExpandedRow.Pairs[1].FinderPattern.StartEnd[1] = 0;

            int      secondRowNumber = 2 * binaryMap.Height / 3;
            BitArray secondRow       = binaryMap.getBlackRow(secondRowNumber, null);

            secondRow.reverse();

            Assert.IsTrue(rssExpandedReader.decodeRow2pairs(secondRowNumber, secondRow));
            var totalPairs = rssExpandedReader.Pairs;

            Result result = RSSExpandedReader.constructResult(totalPairs);

            Assert.AreEqual("(01)98898765432106(3202)012345(15)991231", result.Text);
        }
        public void testRetrieveNextPairPatterns()
        {
            var rssExpandedReader = new RSSExpandedReader();

            var image         = TestCaseUtil.readImage("test/data/blackbox/rssexpanded-1", "3.png");
            var binaryMap     = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
            var rowNumber     = binaryMap.Height / 2;
            var row           = binaryMap.getBlackRow(rowNumber, null);
            var previousPairs = new List <ExpandedPair>();

            var pair1 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);

            previousPairs.Add(pair1);
            var finderPattern = pair1.FinderPattern;

            Assert.IsNotNull(finderPattern);
            Assert.AreEqual(0, finderPattern.Value);

            var pair2 = rssExpandedReader.retrieveNextPair(row, previousPairs, rowNumber);

            previousPairs.Add(pair2);
            finderPattern = pair2.FinderPattern;
            Assert.IsNotNull(finderPattern);
            Assert.AreEqual(0, finderPattern.Value);
        }
        public void testCompleteDecode()
        {
            RSSExpandedReader rssExpandedReader = new RSSExpandedReader();

            BinaryBitmap binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpandedstacked-2/1000.png");

            Result result = rssExpandedReader.decode(binaryMap);

            Assert.AreEqual("(01)98898765432106(3202)012345(15)991231", result.Text);
        }
        private static void assertCorrectImage2binary(String imageFileName, String expected)
        {
            var rssExpandedReader = new RSSExpandedReader();

            var binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpanded-1", imageFileName);
            var rowNumber = binaryMap.Height / 2;
            var row       = binaryMap.getBlackRow(rowNumber, null);

            Assert.IsTrue(rssExpandedReader.decodeRow2pairs(rowNumber, row));

            var binary = BitArrayBuilder.buildBitArray(rssExpandedReader.Pairs);

            Assert.AreEqual(expected, binary.ToString());
        }
        private static void assertCorrectImage2string(String imageFileName, String expected)
        {
            var rssExpandedReader = new RSSExpandedReader();

            var binaryMap = TestCaseUtil.getBinaryBitmap("test/data/blackbox/rssexpanded-1", imageFileName);
            var rowNumber = binaryMap.Height / 2;
            var row       = binaryMap.getBlackRow(rowNumber, null);

            var result = rssExpandedReader.decodeRow(rowNumber, row, null);

            Assert.IsNotNull(result);

            Assert.AreEqual(BarcodeFormat.RSS_EXPANDED, result.BarcodeFormat);
            Assert.AreEqual(expected, result.Text);
        }
        public void testDecodeCheckCharacter()
        {
            var rssExpandedReader = new RSSExpandedReader();

            var image     = TestCaseUtil.readImage("test/data/blackbox/rssexpanded-1", "3.png");
            var binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BitmapLuminanceSource(image)));
            var row       = binaryMap.getBlackRow(binaryMap.Height / 2, null);

            int[] startEnd        = { 145, 243 }; //image pixels where the A1 pattern starts (at 124) and ends (at 214)
            int   value           = 0;            // A
            var   finderPatternA1 = new FinderPattern(value, startEnd, startEnd[0], startEnd[1], image.Height / 2);
            //{1, 8, 4, 1, 1};
            var dataCharacter = rssExpandedReader.decodeDataCharacter(row, finderPatternA1, true, true);

            Assert.AreEqual(98, dataCharacter.Value);
        }