コード例 #1
0
        public void test_issue_599()
        {
            var codewords = new[]
            {
                48, 901, 56, 141, 627, 856, 330, 69, 244, 900, 852, 169, 843, 895, 852, 895, 913, 154, 845,
                778, 387, 89, 869, 901, 219, 474, 543, 650, 169, 201, 9, 160, 35, 70, 900, 900, 900, 900,
                900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 769, 843, 591, 910, 605, 206, 706, 917,
                371, 469, 79, 718, 47, 777, 249, 262, 193, 620, 597, 477, 450, 806, 908, 309, 153, 871, 686
                , 838, 185, 674, 68, 679, 691, 794, 497, 479, 234, 250, 496, 43, 347, 582, 882, 536, 322,
                317, 273, 194, 917, 237, 420, 859, 340, 115, 222, 808, 866, 836, 417, 121, 833, 459, 64,
                159
            };
            var expectedResultBytes = new byte[]
            {
                0x21, 0x82, 0x9f, 0x09, 0x21, 0x1a, 0x45, 0xf4, 0x09, 0x35, 0x2f, 0x44, 0x3f, 0x09, 0x3f, 0x9a,
                0x46, 0x5a, 0x09, 0x63, 0x27, 0x82, 0xff, 0x09, 0x6d, 0x15, 0x41, 0xc9, 0x09, 0xa0, 0x23, 0x46
            };

#if !SILVERLIGHT
            var expectedResult = Encoding.UTF7.GetString(expectedResultBytes);
#else
            var expectedResult = Encoding.GetEncoding("UTF-7").GetString(expectedResultBytes, 0, expectedResultBytes.Length);
#endif
            var result = DecodedBitStreamParser.decode(codewords);
            Assert.AreEqual(expectedResult, result.Text);
        }
コード例 #2
0
        public void testSampleWithNoDataNoMacro()
        {
            int[]
            sampleCodes = { 3, 899, 899, 0 };

            Assert.IsNull(DecodedBitStreamParser.decode(sampleCodes, "0"));
        }
コード例 #3
0
        public void testSampleWithNoFileIdMacro()
        {
            int[]
            sampleCodes = { 4, 928, 222, 198, 0 };
            PDF417ResultMetadata resultMetadata = new PDF417ResultMetadata();

            Assert.AreEqual(-1, DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata));
        }
コード例 #4
0
        public void testSampleWithBadSequenceIndexMacro()
        {
            int[]
            sampleCodes = { 3, 928, 222, 0 };
            PDF417ResultMetadata resultMetadata = new PDF417ResultMetadata();

            Assert.AreEqual(-1, DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata));
        }
コード例 #5
0
        public void testAsciiStandardDecode()
        {
            // ASCII characters 0-127 are encoded as the value + 1
            byte[] bytes =
            {
                ('a' + 1), ('b' + 1), ('c' + 1),
                ('A' + 1), ('B' + 1), ('C' + 1)
            };
            String decodedString = DecodedBitStreamParser.decode(bytes).Text;

            Assert.AreEqual("abcABC", decodedString);
        }
コード例 #6
0
        public void testAsciiDoubleDigitDecode()
        {
            // ASCII double digit (00 - 99) Numeric Value + 130
            byte[] bytes =
            {
                130,        (1 + 130),
                (98 + 130), (99 + 130)
            };
            String decodedString = DecodedBitStreamParser.decode(bytes).Text;

            Assert.AreEqual("00019899", decodedString);
        }
コード例 #7
0
        public void testHanzi()
        {
            BitSourceBuilder builder = new BitSourceBuilder();

            builder.write(0x0D, 4); // Hanzi mode
            builder.write(0x01, 4); // Subset 1 = GB2312 encoding
            builder.write(0x01, 8); // 1 characters
            builder.write(0x03C1, 13);
            String result = DecodedBitStreamParser.decode(builder.toByteArray(),
                                                          Version.getVersionForNumber(1), null, null).Text;

            Assert.AreEqual("\u963f", result);
        }
コード例 #8
0
        public void testSampleWithMacroTerminatorOnly()
        {
            int[] sampleCodes = { 7, 477, 928, 222, 198, 0, 922 };
            PDF417ResultMetadata resultMetadata = new PDF417ResultMetadata();

            DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 3, resultMetadata);

            Assert.AreEqual(99998, resultMetadata.SegmentIndex);
            Assert.AreEqual("000", resultMetadata.FileId);
            Assert.IsTrue(resultMetadata.IsLastSegment);
            Assert.AreEqual(-1, resultMetadata.SegmentCount);
            Assert.IsNull(resultMetadata.OptionalData);
        }
コード例 #9
0
        public void testSimpleByteMode()
        {
            BitSourceBuilder builder = new BitSourceBuilder();

            builder.write(0x04, 4); // Byte mode
            builder.write(0x03, 8); // 3 bytes
            builder.write(0xF1, 8);
            builder.write(0xF2, 8);
            builder.write(0xF3, 8);
            String result = DecodedBitStreamParser.decode(builder.toByteArray(),
                                                          Version.getVersionForNumber(1), null, null).Text;

            Assert.AreEqual("\u00f1\u00f2\u00f3", result);
        }
コード例 #10
0
        public void testHanziLevel1()
        {
            BitSourceBuilder builder = new BitSourceBuilder();

            builder.write(0x0D, 4); // Hanzi mode
            builder.write(0x01, 4); // Subset 1 = GB2312 encoding
            builder.write(0x01, 8); // 1 characters
            // A5A2 (U+30A2) => A5A2 - A1A1 = 401, 4*60 + 01 = 0181
            builder.write(0x0181, 13);
            String result = DecodedBitStreamParser.decode(builder.toByteArray(),
                                                          Version.getVersionForNumber(1), null, null).Text;

            Assert.That(result, Is.EqualTo("\u30a2"));
        }
コード例 #11
0
        public void testSimpleSJIS()
        {
            BitSourceBuilder builder = new BitSourceBuilder();

            builder.write(0x04, 4); // Byte mode
            builder.write(0x04, 8); // 4 bytes
            builder.write(0xA1, 8);
            builder.write(0xA2, 8);
            builder.write(0xA3, 8);
            builder.write(0xD0, 8);
            String result = DecodedBitStreamParser.decode(builder.toByteArray(),
                                                          Version.getVersionForNumber(1), null, null).Text;

            Assert.AreEqual("\uff61\uff62\uff63\uff90", result);
        }
コード例 #12
0
        public void testECI()
        {
            BitSourceBuilder builder = new BitSourceBuilder();

            builder.write(0x07, 4); // ECI mode
            builder.write(0x02, 8); // ECI 2 = CP437 encoding
            builder.write(0x04, 4); // Byte mode
            builder.write(0x03, 8); // 3 bytes
            builder.write(0xA1, 8);
            builder.write(0xA2, 8);
            builder.write(0xA3, 8);
            String result = DecodedBitStreamParser.decode(builder.toByteArray(),
                                                          Version.getVersionForNumber(1), null, null).Text;

            Assert.AreEqual("\u00ed\u00f3\u00fa", result);
        }
コード例 #13
0
        public void testSampleWithNumericValues()
        {
            int[] sampleCodes = { 25, 477, 928, 111, 100, 0, 252, 21, 86, 923, 2, 2, 0, 1, 0, 0, 0, 923, 5, 130, 923,
                                  6,    1, 500,  13, 0 };
            PDF417ResultMetadata resultMetadata = new PDF417ResultMetadata();

            DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 3, resultMetadata);

            Assert.AreEqual(0, resultMetadata.SegmentIndex);
            Assert.AreEqual("000252021086", resultMetadata.FileId);
            Assert.That(resultMetadata.IsLastSegment, Is.False);

            Assert.AreEqual(180980729000000L, resultMetadata.Timestamp);
            Assert.AreEqual(30, resultMetadata.FileSize);
            Assert.AreEqual(260013, resultMetadata.Checksum);
        }
コード例 #14
0
        public void testSampleWithFilename()
        {
            int[] sampleCodes = { 23,  477, 928, 111, 100,   0, 252,  21,  86, 923,   0, 815, 251, 133,  12, 148, 537, 593,
                                  599, 923,   1, 111, 102,  98, 311, 355, 522, 920, 779,  40, 628,  33, 749, 267, 506, 213,928, 465, 248,
                                  493,  72, 780, 699, 780, 493, 755,  84, 198, 628, 368, 156, 198, 809,  19, 113 };
            PDF417ResultMetadata resultMetadata = new PDF417ResultMetadata();

            DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 3, resultMetadata);

            Assert.AreEqual(0, resultMetadata.SegmentIndex);
            Assert.AreEqual("000252021086", resultMetadata.FileId);
            Assert.That(resultMetadata.IsLastSegment, Is.False);
            Assert.AreEqual(2, resultMetadata.SegmentCount);
            Assert.That(resultMetadata.Addressee, Is.Null);
            Assert.That(resultMetadata.Sender, Is.Null);
            Assert.AreEqual("filename.txt", resultMetadata.FileName);
        }
コード例 #15
0
        public void testStandardSample1()
        {
            PDF417ResultMetadata resultMetadata = new PDF417ResultMetadata();

            int[] sampleCodes = { 20,    928, 111, 100, 17, 53, 923, 1, 111, 104, 923, 3, 64, 416, 34, 923, 4, 258, 446, 67,
                                  // we should never reach these
                                  1000, 1000, 1000 };

            DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata);

            Assert.AreEqual(0, resultMetadata.SegmentIndex);
            Assert.AreEqual("017053", resultMetadata.FileId);
            Assert.That(resultMetadata.IsLastSegment, Is.False);
            Assert.AreEqual(4, resultMetadata.SegmentCount);
            Assert.AreEqual("CEN BE", resultMetadata.Sender);
            Assert.AreEqual("ISO CH", resultMetadata.Addressee);

            //int[] optionalData = resultMetadata.OptionalData;
            //Assert.AreEqual(1, optionalData[0], "first element of optional array should be the first field identifier");
            //Assert.AreEqual(67, optionalData[optionalData.Length - 1], "last element of optional array should be the last codeword of the last field");
        }
コード例 #16
0
        public void testStandardSample2()
        {
            PDF417ResultMetadata resultMetadata = new PDF417ResultMetadata();

            int[] sampleCodes = { 11,    928, 111, 103, 17, 53, 923, 1, 111, 104, 922,
                                  // we should never reach these
                                  1000, 1000, 1000 };

            DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata);

            Assert.AreEqual(3, resultMetadata.SegmentIndex);
            Assert.AreEqual("017053", resultMetadata.FileId);
            Assert.That(resultMetadata.IsLastSegment, Is.True);
            Assert.AreEqual(4, resultMetadata.SegmentCount);
            Assert.That(resultMetadata.Addressee, Is.Null);
            Assert.That(resultMetadata.Sender, Is.Null);

            //int[] optionalData = resultMetadata.OptionalData;
            //Assert.AreEqual(1, optionalData[0], "first element of optional array should be the first field identifier");
            //Assert.AreEqual(104, optionalData[optionalData.Length - 1], "last element of optional array should be the last codeword of the last field");
        }
コード例 #17
0
        public void testStandardSample3()
        {
            PDF417ResultMetadata resultMetadata = new PDF417ResultMetadata();

            int[] sampleCodes = { 7, 928, 111, 100, 100, 200, 300,
                                  0 }; // Final dummy ECC codeword required to avoid ArrayIndexOutOfBounds

            DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata);

            Assert.AreEqual(0, resultMetadata.SegmentIndex);
            Assert.AreEqual("100200300", resultMetadata.FileId);
            Assert.False(resultMetadata.IsLastSegment);
            Assert.AreEqual(-1, resultMetadata.SegmentCount);
            Assert.IsNull(resultMetadata.Addressee);
            Assert.IsNull(resultMetadata.Sender);
            Assert.IsNull(resultMetadata.OptionalData);

            // Check that symbol containing no data except Macro is accepted (see note in Annex H.2)
            DecoderResult decoderResult = DecodedBitStreamParser.decode(sampleCodes, "0");

            Assert.AreEqual("", decoderResult.Text);
            Assert.IsNotNull(decoderResult.Other);
        }