Ejemplo n.º 1
0
        public void ReadNext_SegmentWithData()
        {
            var input = new BinaryReader(new MemoryStream(new byte[]
            {
                0xFF, 0xD8,                                     // start of input
                0xFF, 0xE1, 0x00, 0x06, 0x12, 0x34, 0x56, 0x78, // app1 block
                0xFF, 0xDA,                                     // start of scan
                0xAB, 0xCD, 0xEF                                // ... image data
            }));
            var reader = new JpegSegmentReader(input);

            var segment = reader.ReadSegment();

            Assert.AreEqual(JpegSegmentType.Soi, segment.Type);
            Assert.AreEqual(2, segment.Offset);
            Assert.AreEqual(0, segment.Bytes.Length);

            segment = reader.ReadSegment();
            Assert.AreEqual(JpegSegmentType.App1, segment.Type);
            Assert.AreEqual(6, segment.Offset);
            Assert.AreEqual(4, segment.Bytes.Length);
            Assert.AreEqual(0x12, segment.Bytes[0]);
            Assert.AreEqual(0x34, segment.Bytes[1]);
            Assert.AreEqual(0x56, segment.Bytes[2]);
            Assert.AreEqual(0x78, segment.Bytes[3]);

            segment = reader.ReadSegment();
            Assert.AreEqual(JpegSegmentType.Sos, segment.Type);
            Assert.AreEqual(12, segment.Offset);
            Assert.AreEqual(0, segment.Bytes.Length);

            segment = reader.ReadSegment();
            Assert.IsNull(segment);
        }
Ejemplo n.º 2
0
        public void ReadNext_DetectInvalidHeaderTypeAtTheBeginning()
        {
            var input  = new BinaryReader(new MemoryStream(new byte[] { 0xFF, 0x00 }));
            var reader = new JpegSegmentReader(input);

            reader.ReadSegment();
        }
Ejemplo n.º 3
0
        public void ReadNext_DetectInvalidSegmentHeader()
        {
            var input  = new BinaryReader(new MemoryStream(new byte[] { 0xCC }));
            var reader = new JpegSegmentReader(input);

            reader.ReadSegment();
        }
Ejemplo n.º 4
0
        public void ReadNext_EmptyFile()
        {
            var input  = new BinaryReader(new MemoryStream(new byte[0]));
            var reader = new JpegSegmentReader(input);

            Assert.IsNull(reader.ReadSegment());
            Assert.IsNull(reader.ReadSegment());
        }
Ejemplo n.º 5
0
        public void ReadNext_UnexpectedEndOfInputInSegmentData()
        {
            var input = new BinaryReader(new MemoryStream(new byte[]
            {
                0xFF, 0xD8, // start of input
                0xFF, 0xE1, 0x00, 0x03,
            }));
            var reader = new JpegSegmentReader(input);

            reader.ReadSegment(); // start of input
            reader.ReadSegment();
        }
Ejemplo n.º 6
0
        public void ReadNext_SegmentWithoutData()
        {
            var input = new BinaryReader(new MemoryStream(new byte[]
            {
                0xFF, 0xD8,      // start of input
                0xFF, 0xDA,      // start of scan
                0xAB, 0xCD, 0xEF // ... image data
            }));
            var reader = new JpegSegmentReader(input);

            var segment = reader.ReadSegment();

            Assert.AreEqual(JpegSegmentType.Soi, segment.Type);
            Assert.AreEqual(2, segment.Offset);
            Assert.AreEqual(0, segment.Bytes.Length);

            segment = reader.ReadSegment();
            Assert.AreEqual(JpegSegmentType.Sos, segment.Type);
            Assert.AreEqual(4, segment.Offset);
            Assert.AreEqual(0, segment.Bytes.Length);

            segment = reader.ReadSegment();
            Assert.IsNull(segment);
        }