示例#1
0
        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());
        }