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"); }
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"); }
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"); }
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"); }
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"); }
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()); }
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"); }
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); }
public void WriteEmptyColorTransformTest() { var mem = new MemoryStream(); var writer = new SwfStreamWriter(mem); writer.WriteColorTransformRGB(new ColorTransformRGB()); Assert.AreEqual(new byte[] { 4 }, mem.ToArray()); }
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()); }
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"); }
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()); }
public void WriteEncodedU32Byte1Test() { var mem = new MemoryStream(); var writer = new SwfStreamWriter(mem); writer.WriteEncodedU32(0x28); Assert.AreEqual(1, mem.Length); CheckBits(mem, "00101000"); }
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); }
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); }
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); }
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"); }
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 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); }
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()); }
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"); }
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()); }
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()); }
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"); }
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); }
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); }
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 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); }
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"); }
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"); }
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 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"); }
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 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"); }
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"); }
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"); }