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 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 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 WriteByteAfterBitsTest() { 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.WriteByte(0xc3); mem.Seek(0, SeekOrigin.Begin); Assert.AreEqual(0xa8, mem.ReadByte(), "Byte 0"); Assert.AreEqual(0xc3, mem.ReadByte(), "Byte 1"); Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream"); }