public void ReadWriteNumbersOddOffset() { BitStream bs = new BitStream(); BitWriter w = new BitWriter(bs); BitReader r = new BitReader(bs); w.LittleEndian(); r.LittleEndian(); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); Assert.AreEqual(3, bs.LengthBits); Assert.AreEqual(3, bs.PositionBits); //Max w.WriteSByte(sbyte.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(0, r.ReadBit()); Assert.AreEqual(1, r.ReadBit()); Assert.AreEqual(1, r.ReadBit()); Assert.AreEqual(1, r.ReadBit()); Assert.AreEqual(1, r.ReadBit()); Assert.AreEqual(1, r.ReadBit()); Assert.AreEqual(1, r.ReadBit()); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(sbyte.MaxValue, r.ReadSByte()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt16(short.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(short.MaxValue, r.ReadInt16()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt32(67305985); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(67305985, r.ReadInt32()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt32(Int32.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(Int32.MaxValue, r.ReadInt32()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt64(Int64.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(Int64.MaxValue, r.ReadInt64()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteByte(byte.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(byte.MaxValue, r.ReadByte()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteUInt16(ushort.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(ushort.MaxValue, r.ReadUInt16()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteUInt32(UInt32.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(UInt32.MaxValue, r.ReadUInt32()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteUInt64(UInt64.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(UInt64.MaxValue, r.ReadUInt64()); //Min bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteSByte(sbyte.MinValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(sbyte.MinValue, r.ReadSByte()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt16(short.MinValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(short.MinValue, r.ReadInt16()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt32(Int32.MinValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(Int32.MinValue, r.ReadInt32()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt64(Int64.MinValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(Int64.MinValue, r.ReadInt64()); // BIG ENDIAN ////////////////////////////////////////// bs.SetLength(0); r.BigEndian(); w.BigEndian(); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); //Max w.WriteSByte(sbyte.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(sbyte.MaxValue, r.ReadSByte()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt16(short.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(short.MaxValue, r.ReadInt16()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt32(67305985); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(67305985, r.ReadInt32()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt32(Int32.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(Int32.MaxValue, r.ReadInt32()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt64(Int64.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(Int64.MaxValue, r.ReadInt64()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteByte(byte.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(byte.MaxValue, r.ReadByte()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteUInt16(ushort.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(ushort.MaxValue, r.ReadUInt16()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteUInt32(UInt32.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(UInt32.MaxValue, r.ReadUInt32()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteUInt64(UInt64.MaxValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(UInt64.MaxValue, r.ReadUInt64()); //Min bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteSByte(sbyte.MinValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(sbyte.MinValue, r.ReadSByte()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt16(short.MinValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(short.MinValue, r.ReadInt16()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt32(Int32.MinValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(Int32.MinValue, r.ReadInt32()); bs.SetLength(0); w.WriteBit(1); w.WriteBit(1); w.WriteBit(1); w.WriteInt64(Int64.MinValue); bs.SeekBits(3, System.IO.SeekOrigin.Begin); Assert.AreEqual(Int64.MinValue, r.ReadInt64()); }