コード例 #1
0
        public void i16ReadWrite()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();

            writer.i16(i16.MinValue);
            writer.i16(i16.MinValue / 2);
            writer.i16(0);
            i16 half = i16.MaxValue / 2;

            writer.i16(half);
            writer.i16(i16.MaxValue);
            writer.Align();
            var allocated = new byte[i16.MaxValue];

            writer.ToSpan(allocated);
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length);

            reader.CopyFrom(allocated);
            Assert.AreEqual(i16.MinValue, reader.i16());
            Assert.AreEqual(i16.MinValue / 2, reader.i16());
            Assert.AreEqual(0, reader.i16());
            Assert.AreEqual(half, reader.i16Peek());
            Assert.AreEqual(half, reader.i16());
            Assert.AreEqual(i16.MaxValue, reader.i16());
        }
コード例 #2
0
        public void f32ReadWrite()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();

            writer.f32(123.456f);
            writer.Align();
            var data   = writer.ToArray();
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >();

            reader.CopyFrom(data);
            Assert.AreEqual(123.456f, reader.f32Peek());
            Assert.AreEqual(123.456f, reader.f32());
        }
コード例 #3
0
        public void AnsiStringWriteRead()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();

            writer.c("123456789");
            writer.Align();
            var allocated = new byte[ushort.MaxValue];

            writer.ToSpan(allocated);
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length);

            reader.CopyFrom(allocated);
            Assert.AreEqual("123456789", reader.String());
        }
コード例 #4
0
        public void u8WriteRead()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();

            writer.u8(u8.MaxValue);
            writer.Align();
            var allocated = new u8[ushort.MaxValue];

            writer.ToSpan(allocated);
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length);

            reader.CopyFrom(allocated);
            Assert.AreEqual(u8.MaxValue, reader.u8());
        }
コード例 #5
0
        public void BoolReadWrite()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();

            writer.b(true);
            writer.Align();
            var allocated = new byte[ushort.MaxValue];

            writer.ToSpan(allocated);
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length);

            reader.CopyFrom(allocated);
            Assert.True(reader.b());
        }
コード例 #6
0
        public void ToFromArrayPosition()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();

            writer.u8(13);
            writer.i64(i64.MaxValue);
            writer.Align();
            var allocated = new byte[ushort.MaxValue];

            writer.ToSpan(new Span <u8>(allocated, 10, 100));
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length);

            reader.CopyFrom(new ReadOnlySpan <u8>(allocated, 10, 100));
            Assert.AreEqual(13, reader.u8());
            Assert.AreEqual(long.MaxValue, reader.i64());
        }
コード例 #7
0
        public void SimpleStructReadWrite()
        {
            var buffer   = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();
            var expected = new SimpleStruct {
                a = 1.2f, b = 123, c = byte.MaxValue, d = ushort.MaxValue
            };

            buffer.block(expected);
            buffer.Align();
            var allocated = new byte[ushort.MaxValue];

            buffer.ToSpan(allocated);
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length);

            reader.CopyFrom(allocated);
            Assert.AreEqual(expected, reader.block <SimpleStruct>());
        }
コード例 #8
0
        public void IntReadWrite()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();

            writer.i32(int.MinValue);
            writer.i32(0);
            writer.i32(int.MaxValue);
            writer.Align();
            var allocated = new byte[ushort.MaxValue];

            writer.ToSpan(allocated);
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length);

            reader.CopyFrom(allocated);
            Assert.AreEqual(int.MinValue, reader.i32());
            Assert.AreEqual(0, reader.i32());
            Assert.AreEqual(int.MaxValue, reader.i32());
        }
コード例 #9
0
        public void u8ArrayWriteRead()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();
            var input  = new byte[] { 1, 2, 3, 4, 5 };

            writer.u8(input);
            writer.Align();
            var allocated = new u8[ushort.MaxValue];

            writer.ToSpan(allocated);
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length);

            reader.CopyFrom(allocated);
            var output     = new byte[5];
            var lengthPeek = reader.u8SpanLengthPeek();
            var length     = reader.u8(output);

            Assert.AreEqual(lengthPeek, length);
            Assert.AreEqual(input, output);
        }