Example #1
0
        public void JPEGDecoder_Test_YDCHuffman()
        {
            string filePath = @"out.jpg"; // has message byte[] {1, 2, 3, 4, 5} encoded

            JPEGDecoder jd = new JPEGDecoder(filePath);

            HuffmanTable outputHuffmandTable = jd.YDCHuffman;
            
            HuffmanTable expectedHuffmanTable = new HuffmanTable(
                #region HuffmanElements
                new HuffmanElement(0x00, 0x00, 2),
                new HuffmanElement(0x01, 0x02, 3),
                new HuffmanElement(0x02, 0x03, 3),
                new HuffmanElement(0x03, 0x04, 3),
                new HuffmanElement(0x04, 0x05, 3),
                new HuffmanElement(0x05, 0x06, 3),
                new HuffmanElement(0x06, 0x0e, 4),
                new HuffmanElement(0x07, 0x1e, 5),
                new HuffmanElement(0x08, 0x3e, 6),
                new HuffmanElement(0x09, 0x7e, 7),
                new HuffmanElement(0x0a, 0xfe, 8),
                new HuffmanElement(0x0b, 0x1fe, 9)
#endregion
            );

            Assert.AreEqual(expectedHuffmanTable.Elements, outputHuffmandTable.Elements);
        }
Example #2
0
        public void JPEGDecoder_Test_private_field_file()
        {
            string fullPath = @"out.jpg"; // has message byte[] {1, 2, 3, 4, 5} encoded

            StreamReader sr = new StreamReader(fullPath);
            BinaryReader expected = new BinaryReader(sr.BaseStream);

            JPEGDecoder jd = new JPEGDecoder(fullPath);

            PrivateObject po = new PrivateObject(jd);
            BinaryReader output = (BinaryReader) po.GetField("file");

            Assert.AreEqual(expected.Read(), output.Read());
        }
Example #3
0
        public void JPEGDecoder_Test_YAChuffman()
        {
            string filePath = @"out.jpg"; // has message byte[] {1, 2, 3, 4, 5} encoded

            JPEGDecoder jd = new JPEGDecoder(filePath);

            HuffmanTable outputHuffmanTable = jd.YACHuffman;

            HuffmanTable expectedHuffmanTable = new HuffmanTable(
                #region HuffmanElements
                new HuffmanElement(0x00, 0xa, 4),
                new HuffmanElement(0x01, 0x0, 2),
                new HuffmanElement(0x02, 0x1, 2),
                new HuffmanElement(0x03, 0x4, 3),
                new HuffmanElement(0x04, 0xb, 4),
                new HuffmanElement(0x05, 0x1a, 5),
                new HuffmanElement(0x06, 0x78, 7),
                new HuffmanElement(0x07, 0xf8, 8),
                new HuffmanElement(0x08, 0x3f6, 10),
                new HuffmanElement(0x09, 0xff82, 16),
                new HuffmanElement(0x0a, 0xff83, 16),
                new HuffmanElement(0x11, 0xc, 4),
                new HuffmanElement(0x12, 0x1b, 5),
                new HuffmanElement(0x13, 0x79, 7),
                new HuffmanElement(0x14, 0x1f6, 9),
                new HuffmanElement(0x15, 0x7f6, 11),
                new HuffmanElement(0x16, 0xff84, 16),
                new HuffmanElement(0x17, 0xff85, 16),
                new HuffmanElement(0x18, 0xff86, 16),
                new HuffmanElement(0x19, 0xff87, 16),
                new HuffmanElement(0x1a, 0xff88, 16),
                new HuffmanElement(0x21, 0x1c, 5),
                new HuffmanElement(0x22, 0xf9, 8),
                new HuffmanElement(0x23, 0x3f7, 10),
                new HuffmanElement(0x24, 0xff4, 12),
                new HuffmanElement(0x25, 0xff89, 16),
                new HuffmanElement(0x26, 0xff8a, 16),
                new HuffmanElement(0x27, 0xff8b, 16),
                new HuffmanElement(0x28, 0xff8c, 16),
                new HuffmanElement(0x29, 0xff8d, 16),
                new HuffmanElement(0x2a, 0xff8e, 16),
                new HuffmanElement(0x31, 0x3a, 6),
                new HuffmanElement(0x32, 0x1f7, 9),
                new HuffmanElement(0x33, 0xff5, 12),
                new HuffmanElement(0x34, 0xff8f, 16),
                new HuffmanElement(0x35, 0xff90, 16),
                new HuffmanElement(0x36, 0xff91, 16),
                new HuffmanElement(0x37, 0xff92, 16),
                new HuffmanElement(0x38, 0xff93, 16),
                new HuffmanElement(0x39, 0xff94, 16),
                new HuffmanElement(0x3a, 0xff95, 16),
                new HuffmanElement(0x41, 0x3b, 6),
                new HuffmanElement(0x42, 0x3f8, 10),
                new HuffmanElement(0x43, 0xff96, 16),
                new HuffmanElement(0x44, 0xff97, 16),
                new HuffmanElement(0x45, 0xff98, 16),
                new HuffmanElement(0x46, 0xff99, 16),
                new HuffmanElement(0x47, 0xff9a, 16),
                new HuffmanElement(0x48, 0xff9b, 16),
                new HuffmanElement(0x49, 0xff9c, 16),
                new HuffmanElement(0x4a, 0xff9d, 16),
                new HuffmanElement(0x51, 0x7a, 7),
                new HuffmanElement(0x52, 0x7f7, 11),
                new HuffmanElement(0x53, 0xff9e, 16),
                new HuffmanElement(0x54, 0xff9f, 16),
                new HuffmanElement(0x55, 0xffa0, 16),
                new HuffmanElement(0x56, 0xffa1, 16),
                new HuffmanElement(0x57, 0xffa2, 16),
                new HuffmanElement(0x58, 0xffa3, 16),
                new HuffmanElement(0x59, 0xffa4, 16),
                new HuffmanElement(0x5a, 0xffa5, 16),
                new HuffmanElement(0x61, 0x7b, 7),
                new HuffmanElement(0x62, 0xff6, 12),
                new HuffmanElement(0x63, 0xffa6, 16),
                new HuffmanElement(0x64, 0xffa7, 16),
                new HuffmanElement(0x65, 0xffa8, 16),
                new HuffmanElement(0x66, 0xffa9, 16),
                new HuffmanElement(0x67, 0xffaa, 16),
                new HuffmanElement(0x68, 0xffab, 16),
                new HuffmanElement(0x69, 0xffac, 16),
                new HuffmanElement(0x6a, 0xffad, 16),
                new HuffmanElement(0x71, 0xfa, 8),
                new HuffmanElement(0x72, 0xff7, 12),
                new HuffmanElement(0x73, 0xffae, 16),
                new HuffmanElement(0x74, 0xffaf, 16),
                new HuffmanElement(0x75, 0xffb0, 16),
                new HuffmanElement(0x76, 0xffb1, 16),
                new HuffmanElement(0x77, 0xffb2, 16),
                new HuffmanElement(0x78, 0xffb3, 16),
                new HuffmanElement(0x79, 0xffb4, 16),
                new HuffmanElement(0x7a, 0xffb5, 16),
                new HuffmanElement(0x81, 0x1f8, 9),
                new HuffmanElement(0x82, 0x7fc0, 15),
                new HuffmanElement(0x83, 0xffb6, 16),
                new HuffmanElement(0x84, 0xffb7, 16),
                new HuffmanElement(0x85, 0xffb8, 16),
                new HuffmanElement(0x86, 0xffb9, 16),
                new HuffmanElement(0x87, 0xffba, 16),
                new HuffmanElement(0x88, 0xffbb, 16),
                new HuffmanElement(0x89, 0xffbc, 16),
                new HuffmanElement(0x8a, 0xffbd, 16),
                new HuffmanElement(0x91, 0x1f9, 9),
                new HuffmanElement(0x92, 0xffbe, 16),
                new HuffmanElement(0x93, 0xffbf, 16),
                new HuffmanElement(0x94, 0xffc0, 16),
                new HuffmanElement(0x95, 0xffc1, 16),
                new HuffmanElement(0x96, 0xffc2, 16),
                new HuffmanElement(0x97, 0xffc3, 16),
                new HuffmanElement(0x98, 0xffc4, 16),
                new HuffmanElement(0x99, 0xffc5, 16),
                new HuffmanElement(0x9a, 0xffc6, 16),
                new HuffmanElement(0xa1, 0x1fa, 9),
                new HuffmanElement(0xa2, 0xffc7, 16),
                new HuffmanElement(0xa3, 0xffc8, 16),
                new HuffmanElement(0xa4, 0xffc9, 16),
                new HuffmanElement(0xa5, 0xffca, 16),
                new HuffmanElement(0xa6, 0xffcb, 16),
                new HuffmanElement(0xa7, 0xffcc, 16),
                new HuffmanElement(0xa8, 0xffcd, 16),
                new HuffmanElement(0xa9, 0xffce, 16),
                new HuffmanElement(0xaa, 0xffcf, 16),
                new HuffmanElement(0xb1, 0x3f9, 10),
                new HuffmanElement(0xb2, 0xffd0, 16),
                new HuffmanElement(0xb3, 0xffd1, 16),
                new HuffmanElement(0xb4, 0xffd2, 16),
                new HuffmanElement(0xb5, 0xffd3, 16),
                new HuffmanElement(0xb6, 0xffd4, 16),
                new HuffmanElement(0xb7, 0xffd5, 16),
                new HuffmanElement(0xb8, 0xffd6, 16),
                new HuffmanElement(0xb9, 0xffd7, 16),
                new HuffmanElement(0xba, 0xffd8, 16),
                new HuffmanElement(0xc1, 0x3fa, 10),
                new HuffmanElement(0xc2, 0xffd9, 16),
                new HuffmanElement(0xc3, 0xffda, 16),
                new HuffmanElement(0xc4, 0xffdb, 16),
                new HuffmanElement(0xc5, 0xffdc, 16),
                new HuffmanElement(0xc6, 0xffdd, 16),
                new HuffmanElement(0xc7, 0xffde, 16),
                new HuffmanElement(0xc8, 0xffdf, 16),
                new HuffmanElement(0xc9, 0xffe0, 16),
                new HuffmanElement(0xca, 0xffe1, 16),
                new HuffmanElement(0xd1, 0x7f8, 11),
                new HuffmanElement(0xd2, 0xffe2, 16),
                new HuffmanElement(0xd3, 0xffe3, 16),
                new HuffmanElement(0xd4, 0xffe4, 16),
                new HuffmanElement(0xd5, 0xffe5, 16),
                new HuffmanElement(0xd6, 0xffe6, 16),
                new HuffmanElement(0xd7, 0xffe7, 16),
                new HuffmanElement(0xd8, 0xffe8, 16),
                new HuffmanElement(0xd9, 0xffe9, 16),
                new HuffmanElement(0xda, 0xffea, 16),
                new HuffmanElement(0xe1, 0xffeb, 16),
                new HuffmanElement(0xe2, 0xffec, 16),
                new HuffmanElement(0xe3, 0xffed, 16),
                new HuffmanElement(0xe4, 0xffee, 16),
                new HuffmanElement(0xe5, 0xffef, 16),
                new HuffmanElement(0xe6, 0xfff0, 16),
                new HuffmanElement(0xe7, 0xfff1, 16),
                new HuffmanElement(0xe8, 0xfff2, 16),
                new HuffmanElement(0xe9, 0xfff3, 16),
                new HuffmanElement(0xea, 0xfff4, 16),
                new HuffmanElement(0xf0, 0x7f9, 11),
                new HuffmanElement(0xf1, 0xfff5, 16),
                new HuffmanElement(0xf2, 0xfff6, 16),
                new HuffmanElement(0xf3, 0xfff7, 16),
                new HuffmanElement(0xf4, 0xfff8, 16),
                new HuffmanElement(0xf5, 0xfff9, 16),
                new HuffmanElement(0xf6, 0xfffa, 16),
                new HuffmanElement(0xf7, 0xfffb, 16),
                new HuffmanElement(0xf8, 0xfffc, 16),
                new HuffmanElement(0xf9, 0xfffd, 16),
                new HuffmanElement(0xfa, 0xfffe, 16)
#endregion
            );

            Assert.AreEqual(expectedHuffmanTable.Elements, outputHuffmanTable.Elements);
        }
Example #4
0
        public void Decode_Test() 
        {

            string fullPath = "out.jpg";

            JPEGDecoder jd = new JPEGDecoder(fullPath);

            var output = jd.Decode();

            byte[] expectedMessage = new byte[] {1, 2, 3, 4, 5};

            Assert.AreEqual(expectedMessage, output);
        }