Beispiel #1
0
        public void WriteLongTagDataTest()
        {
            const SwfTagType tagType = SwfTagType.ExportAssets;
            var data = new byte[4096];

            for (var i = 0; i < data.Length; i++)
            {
                data[i] = (byte)(i & 0xff);
            }
            var tagData = new SwfTagData {
                Type = tagType, Data = data
            };
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteTagData(tagData);

            var       array  = mem.ToArray();
            const int header = ((int)tagType << 6) | 0x3f;

            Assert.AreEqual(header & 0xff, array[0]);
            Assert.AreEqual(header >> 8, array[1]);
            var len = data.Length;

            Assert.AreEqual((byte)((len >> 0) & 0xff), array[2]);
            Assert.AreEqual((byte)((len >> 8) & 0xff), array[3]);
            Assert.AreEqual((byte)((len >> 16) & 0xff), array[4]);
            Assert.AreEqual((byte)((len >> 24) & 0xff), array[5]);
            array = array.Skip(6).ToArray();
            AssertExt.AreEqual(data, array, "Data should be equal");
            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
        public void WriteSwfHeaderTest()
        {
            var hdr = new SwfHeader {
                FrameSize = new SwfRect {
                    XMin = 0x004,
                    XMax = 0x48f,
                    YMin = 0x008,
                    YMax = 0x0ee
                },
                FrameCount = 10,
                FrameRate = 12.25
            };
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteSwfHeader(hdr);

            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0x60, mem.ReadByte(), "Byte 0");
            Assert.AreEqual(0x02, mem.ReadByte(), "Byte 1");
            Assert.AreEqual(0x24, mem.ReadByte(), "Byte 2");
            Assert.AreEqual(0x78, mem.ReadByte(), "Byte 3");
            Assert.AreEqual(0x04, mem.ReadByte(), "Byte 4");
            Assert.AreEqual(0x07, mem.ReadByte(), "Byte 5");
            Assert.AreEqual(0x70, mem.ReadByte(), "Byte 6");

            Assert.AreEqual(64, mem.ReadByte(), "Byte 7");
            Assert.AreEqual(12, mem.ReadByte(), "Byte 8");

            Assert.AreEqual(10, mem.ReadByte(), "Byte 9");
            Assert.AreEqual(0, mem.ReadByte(), "Byte 10");

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #3
0
        public void DefineBitsJPEG2Test()
        {
            var file = new SwfFile();

            file.FileInfo.Version = 10;

            var tag = new DefineBitsJPEG2Tag();

            tag.CharacterID = 1;
            tag.ImageData   = GetEmbeddedResourceData("DefineBitsJPEG2.jpg");
            var visitor = new SwfTagSerializer(file);
            var res     = visitor.GetTagData(tag);
            var mem     = new MemoryStream();
            var writer  = new SwfStreamWriter(mem);

            writer.WriteTagData(res);

            var etalon = GetTagFullBinariesFromSwfResource("DefineBitsJPEG2.swf")
                         .FirstOrDefault(item => item.Type == SwfTagType.DefineBitsJPEG2);

            if (etalon.Binary == null)
            {
                throw new InvalidOperationException("Couldn't find etalon tag");
            }

            AssertExt.AreEqual(etalon.Binary, mem.ToArray(), "Checking DefineBitsJPEG2");
        }
        public void WriteSwfFileInfoTest()
        {
            var fileInfo = new SwfFileInfo {
                Format     = SwfFormat.CWS,
                Version    = 10,
                FileLength = 0x12345678
            };
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteSwfFileInfo(fileInfo);

            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual((byte)'C', mem.ReadByte());
            Assert.AreEqual((byte)'W', mem.ReadByte());
            Assert.AreEqual((byte)'S', mem.ReadByte());

            Assert.AreEqual(10, mem.ReadByte());

            Assert.AreEqual(0x78, mem.ReadByte());
            Assert.AreEqual(0x56, mem.ReadByte());
            Assert.AreEqual(0x34, mem.ReadByte());
            Assert.AreEqual(0x12, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #5
0
        public void ReadSwfHeaderTest()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            var rect   = new SwfRect {
                XMin = 0x004,
                XMax = 0x48f,
                YMin = 0x008,
                YMax = 0x0ee
            };

            writer.WriteRect(ref rect);
            writer.WriteFixedPoint8(23.75);
            writer.WriteUInt16(20);
            mem.Seek(0, SeekOrigin.Begin);

            var reader = new SwfStreamReader(mem);
            var hdr    = reader.ReadSwfHeader();

            Assert.AreEqual(rect, hdr.FrameSize);
            Assert.AreEqual(23.75, hdr.FrameRate);
            Assert.AreEqual(20, hdr.FrameCount);

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
        public void WriteSwfFileInfoTest()
        {
            var fileInfo = new SwfFileInfo {
                Format = "CWS",
                Version = 10,
                FileLength = 0x12345678
            };
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteSwfFileInfo(fileInfo);

            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual((byte)'C', mem.ReadByte());
            Assert.AreEqual((byte)'W', mem.ReadByte());
            Assert.AreEqual((byte)'S', mem.ReadByte());

            Assert.AreEqual(10, mem.ReadByte());

            Assert.AreEqual(0x78, mem.ReadByte());
            Assert.AreEqual(0x56, mem.ReadByte());
            Assert.AreEqual(0x34, mem.ReadByte());
            Assert.AreEqual(0x12, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #7
0
        public void FlushBitsTest()
        {
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);

            writer.WriteBit(true);
            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);

            writer.FlushBits();

            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0xaa, mem.ReadByte(), "Byte 0");
            Assert.AreEqual(0xc0, mem.ReadByte(), "Byte 1");

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #8
0
        public void WriteBitTest()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);

            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(true);
            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(true);

            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0xaa, mem.ReadByte(), "Byte 0");
            Assert.AreEqual(0x73, mem.ReadByte(), "Byte 1");

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #9
0
        public void ReadUnsignedBits2Test()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);

            mem.Seek(0, SeekOrigin.Begin);
            var reader = new SwfStreamReader(mem);

            Assert.AreEqual(false, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());

            Assert.AreEqual(true, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());
            Assert.AreEqual(true, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());
        }
Beispiel #10
0
        public void WriteShortTagDataTest()
        {
            const SwfTagType tagType = SwfTagType.ExportAssets;
            var data = new byte[10];

            for (var i = 0; i < data.Length; i++)
            {
                data[i] = (byte)(i & 0xff);
            }
            var tagData = new SwfTagData {
                Type = tagType, Data = data
            };
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteTagData(tagData);

            var array  = mem.ToArray();
            var header = ((int)tagType << 6) | data.Length;

            Assert.AreEqual((byte)(header & 0xff), array[0]);
            Assert.AreEqual((byte)(header >> 8), array[1]);
            array = array.Skip(2).ToArray();
            AssertExt.AreEqual(data, array, "Data should be equal");
            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #11
0
        protected void WriteBits(Stream stream, params string[] bits)
        {
            var writer = new SwfStreamWriter(stream);

            foreach (var bitString in bits)
            {
                foreach (var ch in bitString)
                {
                    switch (ch)
                    {
                    case '0':
                        writer.WriteBit(false);
                        break;

                    case '1':
                        writer.WriteBit(true);
                        break;

                    case '.':
                        break;

                    default:
                        throw new InvalidOperationException("Invalid character " + ch);
                    }
                }
            }
            writer.FlushBits();
            stream.Seek(0, SeekOrigin.Begin);
        }
Beispiel #12
0
        public void WriteEmptyColorTransformTest()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteColorTransformRGB(new ColorTransformRGB());
            Assert.AreEqual(new byte[] { 4 }, mem.ToArray());
        }
Beispiel #13
0
 public void WriteEmptyMatrixTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     var matrix = SwfMatrix.Identity;
     writer.WriteMatrix(ref matrix);
     Assert.AreEqual(new byte[] {0x02, 0x00}, mem.ToArray());
 }
Beispiel #14
0
        public void WriteEncodedU32Bytes5Test()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteEncodedU32(0xa8013aa8);
            Assert.AreEqual(5, mem.Length);
            CheckBits(mem, "10101000", "11110101", "10000100", "11000000", "00001010");
        }
Beispiel #15
0
        public void WriteEmptyMatrixTest()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            var matrix = SwfMatrix.Identity;

            writer.WriteMatrix(ref matrix);
            Assert.AreEqual(new byte[] { 0x02, 0x00 }, mem.ToArray());
        }
Beispiel #16
0
        public void WriteEncodedU32Byte1Test()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteEncodedU32(0x28);
            Assert.AreEqual(1, mem.Length);
            CheckBits(mem, "00101000");
        }
Beispiel #17
0
        protected void WriteGradient(T gradient, byte[] etalon)
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            Write(writer, gradient);
            var buffer = mem.ToArray();

            Assert.AreEqual(etalon, buffer);
        }
Beispiel #18
0
        protected void WriteFilter <T>(T filter, byte[] etalon) where T : BaseFilter
        {
            var mem          = new MemoryStream();
            var writer       = new SwfStreamWriter(mem);
            var actionWriter = new FilterWriter();

            actionWriter.Write(writer, filter);
            var buffer = mem.ToArray();

            Assert.AreEqual(etalon, buffer);
        }
Beispiel #19
0
        protected void WriteAction <T>(T action, byte[] etalon) where T : ActionBase
        {
            var mem          = new MemoryStream();
            var writer       = new SwfStreamWriter(mem);
            var actionWriter = new ActionWriter(writer);

            actionWriter.WriteAction(action);
            var buffer = mem.ToArray();

            Assert.AreEqual(etalon, buffer);
        }
Beispiel #20
0
        public void WriteShortFloatTest()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteShortFloat(3.43359375f);
            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0xde, mem.ReadByte());
            Assert.AreEqual(0x42, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #21
0
        public void WriteUInt16Test()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteUInt16(0xe712);
            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0x12, mem.ReadByte());
            Assert.AreEqual(0xe7, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #22
0
        public void WriteNegativeFixedPoint16FromBitsTest()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            var bits   = new SignedBitsCount(-81920).GetBits();

            writer.WriteFixedPoint16(-1.25, bits);
            writer.FlushBits();
            mem.Seek(0, SeekOrigin.Begin);
            var reader = new SwfStreamReader(mem);
            int actual = reader.ReadSignedBits(bits);

            Assert.AreEqual(-81920, actual);
        }
Beispiel #23
0
 public void WriteRectMustbeByteAlignedTest()
 {
     var rect = new SwfRect {
         XMin = 0,
         XMax = 11000,
         YMin = 0,
         YMax = 8000
     };
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     writer.WriteRect(ref rect);
     writer.WriteUnsignedBits(0xb3, 8);
     Assert.AreEqual(new byte[] { 0x78, 0x00, 0x05, 0x5f, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0xb3 }, mem.ToArray());
 }
Beispiel #24
0
        public void WriteRGBTest()
        {
            var val = new SwfRGB(0x0a, 0xff, 0x83);
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteRGB(ref val);
            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0x0a, mem.ReadByte(), "Byte 0");
            Assert.AreEqual(0xff, mem.ReadByte(), "Byte 1");
            Assert.AreEqual(0x83, mem.ReadByte(), "Byte 2");

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #25
0
        public void WriteRectTest()
        {
            var rect = new SwfRect {
                XMin = 0,
                XMax = 11000,
                YMin = 0,
                YMax = 8000
            };
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteRect(ref rect);
            Assert.AreEqual(new byte[] { 0x78, 0x00, 0x05, 0x5f, 0x00, 0x00, 0x0f, 0xa0, 0x00 }, mem.ToArray());
        }
Beispiel #26
0
        public void WriteFixedPoint8Test()
        {
            var          mem      = new MemoryStream();
            const int    val      = 0xc3aa;
            const byte   hi       = val >> 8;
            const byte   low      = val & 0xff;
            const double expected = hi + low / 256.0;
            var          writer   = new SwfStreamWriter(mem);

            writer.WriteFixedPoint8(expected);
            mem.Seek(0, SeekOrigin.Begin);
            Assert.AreEqual(low, mem.ReadByte());
            Assert.AreEqual(hi, mem.ReadByte());
        }
Beispiel #27
0
        public void WriteUInt32Test()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteUInt32(0x456e7120);
            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0x20, mem.ReadByte());
            Assert.AreEqual(0x71, mem.ReadByte());
            Assert.AreEqual(0x6e, mem.ReadByte());
            Assert.AreEqual(0x45, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #28
0
        public void ReadNegativeFixedPoint16FromBitsTest()
        {
            var       mem    = new MemoryStream();
            var       writer = new SwfStreamWriter(mem);
            const int val    = -81920;
            var       bits   = new SignedBitsCount(val).GetBits();

            writer.WriteSignedBits(val, bits);
            writer.FlushBits();
            mem.Seek(0, SeekOrigin.Begin);
            var    reader = new SwfStreamReader(mem);
            double actual = reader.ReadFixedPoint16(bits);

            Assert.AreEqual(-1.25, actual);
        }
Beispiel #29
0
        public void WriteRGBTest()
        {
            var val    = new SwfRGB(0x0a, 0xff, 0x83);
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteRGB(ref val);
            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0x0a, mem.ReadByte(), "Byte 0");
            Assert.AreEqual(0xff, mem.ReadByte(), "Byte 1");
            Assert.AreEqual(0x83, mem.ReadByte(), "Byte 2");

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #30
0
        public void WriteRectTest2()
        {
            var rect = new SwfRect {
                XMin = 0x004,
                XMax = 0x48f,
                YMin = 0x008,
                YMax = 0x0ee
            };
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteRect(ref rect);
            writer.FlushBits();
            CheckBits(mem, "01100", "0000.00000100", "0100.10001111", "0000.00001000", "0000.11101110");
            mem.Seek(0, SeekOrigin.Begin);
        }
Beispiel #31
0
 public void WriteOneByteActionsTest()
 {
     var vals = Enum.GetValues(typeof(ActionCode));
     var factory = new ActionsFactory();
     foreach (ActionCode type in vals) {
         if ((byte)type < 0x80) {
             var action = factory.Create(type);
             var mem = new MemoryStream();
             var writer = new SwfStreamWriter(mem);
             var actionWriter = new ActionWriter(writer);
             actionWriter.WriteAction(action);
             var buffer = mem.ToArray();
             Assert.AreEqual(1, buffer.Length);
             Assert.AreEqual((byte)type, buffer[0]);
         }
     }
 }
Beispiel #32
0
        public void WriteFixedPoint16FromBitsTest()
        {
            var          mem      = new MemoryStream();
            var          writer   = new SwfStreamWriter(mem);
            const int    val      = 0x03aa4523;
            const ushort hi       = val >> 16;
            const ushort low      = val & 0xffff;
            const double expected = hi + low / 65536.0;
            var          bits     = new SignedBitsCount(hi).GetBits() + 16;

            writer.WriteFixedPoint16(expected, bits);
            writer.FlushBits();
            mem.Seek(0, SeekOrigin.Begin);
            var    reader = new SwfStreamReader(mem);
            double actual = reader.ReadFixedPoint16(bits);

            Assert.AreEqual(expected, actual);
        }
Beispiel #33
0
 public void WriteMatrixFromBitsTest()
 {
     var mem = new MemoryStream();
     var matrix = new SwfMatrix {
         ScaleX = 2.5,
         ScaleY = 1.75,
         RotateSkew0 = 3.25,
         RotateSkew1 = 0.5,
         TranslateX = 16,
         TranslateY = 24
     };
     var writer = new SwfStreamWriter(mem);
     writer.WriteMatrix(ref matrix);
     CheckBits(mem,
         "1", "10011", "010.10000000.00000000", "001.11000000.00000000",
         "1", "10011", "011.01000000.00000000", "000.10000000.00000000",
         "00110", "010000", "011000");
 }
Beispiel #34
0
        public void WriteColorTransformRGBFromBitsMultTest()
        {
            var mem      = new MemoryStream();
            var writer   = new SwfStreamWriter(mem);
            var tranform = new ColorTransformRGB {
                RedMultTerm   = 10,
                GreenMultTerm = 224,
                BlueMultTerm  = -10,
                HasMultTerms  = true,
                RedAddTerm    = 0,
                GreenAddTerm  = 0,
                BlueAddTerm   = 0,
                HasAddTerms   = false
            };

            writer.WriteColorTransformRGB(ref tranform);
            CheckBits(mem,
                      "0", "1", "1001", "0.00001010", "0.11100000", "1.11110110");
        }
Beispiel #35
0
        public void WriteMatrixFromBitsTest()
        {
            var mem    = new MemoryStream();
            var matrix = new SwfMatrix {
                ScaleX      = 2.5,
                ScaleY      = 1.75,
                RotateSkew0 = 3.25,
                RotateSkew1 = 0.5,
                TranslateX  = 16,
                TranslateY  = 24
            };
            var writer = new SwfStreamWriter(mem);

            writer.WriteMatrix(ref matrix);
            CheckBits(mem,
                      "1", "10011", "010.10000000.00000000", "001.11000000.00000000",
                      "1", "10011", "011.01000000.00000000", "000.10000000.00000000",
                      "00110", "010000", "011000");
        }
Beispiel #36
0
        public void WriteOneByteActionsTest()
        {
            var vals    = Enum.GetValues(typeof(ActionCode));
            var factory = new ActionsFactory();

            foreach (ActionCode type in vals)
            {
                if ((byte)type < 0x80)
                {
                    var action       = factory.Create(type);
                    var mem          = new MemoryStream();
                    var writer       = new SwfStreamWriter(mem);
                    var actionWriter = new ActionWriter(writer);
                    actionWriter.WriteAction(action);
                    var buffer = mem.ToArray();
                    Assert.AreEqual(1, buffer.Length);
                    Assert.AreEqual((byte)type, buffer[0]);
                }
            }
        }
        public void DefineBitsJPEG2Test()
        {
            var file = new SwfFile();
            file.FileInfo.Version = 10;

            var tag = new DefineBitsJPEG2Tag();
            tag.CharacterID = 1;
            tag.ImageData = GetEmbeddedResourceData("DefineBitsJPEG2.jpg");
            var visitor = new SwfTagSerializer(file);
            var res = visitor.GetTagData(tag);
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteTagData(res);

            var etalon = GetTagFullBinariesFromSwfResource("DefineBitsJPEG2.swf")
                .FirstOrDefault(item => item.Type == SwfTagType.DefineBitsJPEG2);
            if (etalon.Binary == null) throw new InvalidOperationException("Couldn't find etalon tag");

            AssertExt.AreEqual(etalon.Binary, mem.ToArray(), "Checking DefineBitsJPEG2");
        }
Beispiel #38
0
        public void WriteSignedBitsNegativeTest()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteSignedBits(-0x155, 10);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(true);

            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0xaa, mem.ReadByte());
            Assert.AreEqual(0xc3, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #39
0
        public void WriteColorTransformRGBAFromBitsMultAddTest()
        {
            var mem      = new MemoryStream();
            var writer   = new SwfStreamWriter(mem);
            var tranform = new ColorTransformRGBA {
                RedMultTerm   = 10,
                GreenMultTerm = -10,
                BlueMultTerm  = 224,
                AlphaMultTerm = 176,
                HasMultTerms  = true,
                RedAddTerm    = -9,
                GreenAddTerm  = 129,
                BlueAddTerm   = 16,
                AlphaAddTerm  = 15,
                HasAddTerms   = true
            };

            writer.WriteColorTransformRGBA(ref tranform);
            CheckBits(mem,
                      "1", "1", "1001", "0.00001010", "1.11110110", "0.11100000", "0.10110000",
                      "1.11110111", "0.10000001", "0.00010000", "0.00001111");
        }
        public void ReadSwfHeaderTest()
        {
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            var rect = new SwfRect {
                XMin = 0x004,
                XMax = 0x48f,
                YMin = 0x008,
                YMax = 0x0ee
            };
            writer.WriteRect(ref rect);
            writer.WriteFixedPoint8(23.75);
            writer.WriteUInt16(20);
            mem.Seek(0, SeekOrigin.Begin);

            var reader = new SwfStreamReader(mem);
            var hdr = reader.ReadSwfHeader();
            Assert.AreEqual(rect, hdr.FrameSize);
            Assert.AreEqual(23.75, hdr.FrameRate);
            Assert.AreEqual(20, hdr.FrameCount);

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #41
0
 public void WriteEncodedU32Bytes5Test()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     writer.WriteEncodedU32(0xa8013aa8);
     Assert.AreEqual(5, mem.Length);
     CheckBits(mem, "10101000", "11110101", "10000100", "11000000", "00001010");
 }
Beispiel #42
0
 public void WriteFixedPoint8Test()
 {
     var mem = new MemoryStream();
     const int val = 0xc3aa;
     const byte hi = val >> 8;
     const byte low = val & 0xff;
     const double expected = hi + low / 256.0;
     var writer = new SwfStreamWriter(mem);
     writer.WriteFixedPoint8(expected);
     mem.Seek(0, SeekOrigin.Begin);
     Assert.AreEqual(low, mem.ReadByte());
     Assert.AreEqual(hi, mem.ReadByte());
 }
Beispiel #43
0
        public void WriteShortTagDataTest()
        {
            const SwfTagType tagType = SwfTagType.ExportAssets;
            var data = new byte[10];
            for (var i = 0; i < data.Length; i++) {
                data[i] = (byte)(i & 0xff);
            }
            var tagData = new SwfTagData { Type = tagType, Data = data };
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteTagData(tagData);

            var array = mem.ToArray();
            var header = ((int)tagType << 6) | data.Length;
            Assert.AreEqual((byte)(header & 0xff), array[0]);
            Assert.AreEqual((byte)(header >> 8), array[1]);
            array = array.Skip(2).ToArray();
            AssertExt.AreEqual(data, array, "Data should be equal");
            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #44
0
        public void WriteUnsignedBitsTest()
        {
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteUnsignedBits(0x2ab, 10);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(true);

            mem.Seek(0, SeekOrigin.Begin);
            Assert.AreEqual(0xaa, mem.ReadByte());
            Assert.AreEqual(0xc3, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #45
0
 public void ReadFixedPoint16FromBitsTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     const int val = 0x03aa4523;
     const ushort hi = val >> 16;
     const ushort low = val & 0xffff;
     const double expected = hi + low / 65536.0;
     var bits = new SignedBitsCount(hi).GetBits();
     writer.WriteUnsignedBits(hi, bits);
     writer.WriteUnsignedBits(low, 16);
     writer.FlushBits();
     mem.Seek(0, SeekOrigin.Begin);
     var reader = new SwfStreamReader(mem);
     double actual = reader.ReadFixedPoint16(bits + 16);
     Assert.AreEqual(expected, actual);
 }
 public void WriteEmptyColorTransformTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     writer.WriteColorTransformRGBA(new ColorTransformRGBA());
     Assert.AreEqual(new byte[] { 4 }, mem.ToArray());
 }
 public void WriteColorTransformRGBFromBitsMultAddTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     var tranform = new ColorTransformRGB {
         RedMultTerm = 10,
         GreenMultTerm = -10,
         BlueMultTerm = 224,
         HasMultTerms = true,
         RedAddTerm = -9,
         GreenAddTerm = 129,
         BlueAddTerm = 16,
         HasAddTerms = true
     };
     writer.WriteColorTransformRGB(ref tranform);
     CheckBits(mem,
         "1", "1", "1001", "0.00001010", "1.11110110", "0.11100000", "1.11110111", "0.10000001", "0.00010000");
 }
Beispiel #48
0
 public void WriteRectTest2()
 {
     var rect = new SwfRect {
         XMin = 0x004,
         XMax = 0x48f,
         YMin = 0x008,
         YMax = 0x0ee
     };
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     writer.WriteRect(ref rect);
     writer.FlushBits();
     CheckBits(mem, "01100", "0000.00000100", "0100.10001111", "0000.00001000", "0000.11101110");
     mem.Seek(0, SeekOrigin.Begin);
 }
Beispiel #49
0
 public void WriteNegativeFixedPoint16FromBitsTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     var bits = new SignedBitsCount(-81920).GetBits();
     writer.WriteFixedPoint16(-1.25, bits);
     writer.FlushBits();
     mem.Seek(0, SeekOrigin.Begin);
     var reader = new SwfStreamReader(mem);
     int actual = reader.ReadSignedBits(bits);
     Assert.AreEqual(-81920, actual);
 }
Beispiel #50
0
        public void WriteShortFloatTest()
        {
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteShortFloat(3.43359375f);
            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0xde, mem.ReadByte());
            Assert.AreEqual(0x42, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #51
0
 public void ReadNegativeFixedPoint16FromBitsTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     const int val = -81920;
     var bits = new SignedBitsCount(val).GetBits();
     writer.WriteSignedBits(val, bits);
     writer.FlushBits();
     mem.Seek(0, SeekOrigin.Begin);
     var reader = new SwfStreamReader(mem);
     double actual = reader.ReadFixedPoint16(bits);
     Assert.AreEqual(-1.25, actual);
 }
Beispiel #52
0
        public void WriteLongTagDataTest()
        {
            const SwfTagType tagType = SwfTagType.ExportAssets;
            var data = new byte[4096];
            for (var i = 0; i < data.Length; i++) {
                data[i] = (byte)(i & 0xff);
            }
            var tagData = new SwfTagData { Type = tagType, Data = data };
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteTagData(tagData);

            var array = mem.ToArray();
            const int header = ((int)tagType << 6) | 0x3f;
            Assert.AreEqual(header & 0xff, array[0]);
            Assert.AreEqual(header >> 8, array[1]);
            var len = data.Length;
            Assert.AreEqual((byte)((len >> 0) & 0xff), array[2]);
            Assert.AreEqual((byte)((len >> 8) & 0xff), array[3]);
            Assert.AreEqual((byte)((len >> 16) & 0xff), array[4]);
            Assert.AreEqual((byte)((len >> 24) & 0xff), array[5]);
            array = array.Skip(6).ToArray();
            AssertExt.AreEqual(data, array, "Data should be equal");
            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #53
0
        public void WriteUInt32Test()
        {
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteUInt32(0x456e7120);
            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0x20, mem.ReadByte());
            Assert.AreEqual(0x71, mem.ReadByte());
            Assert.AreEqual(0x6e, mem.ReadByte());
            Assert.AreEqual(0x45, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Beispiel #54
0
 protected void WriteBits(Stream stream, params string[] bits)
 {
     var writer = new SwfStreamWriter(stream);
     foreach (var bitString in bits) {
         foreach (var ch in bitString) {
             switch (ch) {
                 case '0':
                     writer.WriteBit(false);
                     break;
                 case '1':
                     writer.WriteBit(true);
                     break;
                 case '.':
                     break;
                 default:
                     throw new InvalidOperationException("Invalid character " + ch);
             }
         }
     }
     writer.FlushBits();
     stream.Seek(0, SeekOrigin.Begin);
 }
Beispiel #55
0
        public void ReadUnsignedBits2Test()
        {
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);
            writer.WriteBit(true);
            writer.WriteBit(false);

            mem.Seek(0, SeekOrigin.Begin);
            var reader = new SwfStreamReader(mem);

            Assert.AreEqual(false, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());

            Assert.AreEqual(true, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());
            Assert.AreEqual(true, reader.ReadBit());
            Assert.AreEqual(false, reader.ReadBit());
        }
Beispiel #56
0
        public void WriteUInt16Test()
        {
            var mem = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            writer.WriteUInt16(0xe712);
            mem.Seek(0, SeekOrigin.Begin);

            Assert.AreEqual(0x12, mem.ReadByte());
            Assert.AreEqual(0xe7, mem.ReadByte());

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
 public void WriteColorTransformRGBAFromBitsAddTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     var tranform = new ColorTransformRGBA {
         RedMultTerm = 0,
         GreenMultTerm = 0,
         BlueMultTerm = 0,
         AlphaMultTerm = 0,
         HasMultTerms = false,
         RedAddTerm = 10,
         GreenAddTerm = -10,
         BlueAddTerm = 224,
         AlphaAddTerm = 192,
         HasAddTerms = true
     };
     writer.WriteColorTransformRGBA(ref tranform);
     CheckBits(mem,
         "1", "0", "1001", "0.00001010", "1.11110110", "0.11100000", "0.11000000");
 }
Beispiel #58
0
 public void WriteEncodedU32Byte1Test()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     writer.WriteEncodedU32(0x28);
     Assert.AreEqual(1, mem.Length);
     CheckBits(mem, "00101000");
 }