コード例 #1
0
        public void RandomManyTimes()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >();
            var random = new Random(42);

            for (var i = 0; i < i16.MaxValue; i++)
            {
                for (var j = 0; j < BitBufferLimits.MtuIeee802; j++)
                {
                    if (random.Next() % 11 == 0)
                    {
                        writer.i64(long.MaxValue);
                    }
                    if (random.Next() % 7 == 0)
                    {
                        writer.i32(int.MaxValue);
                    }
                    if (random.Next() % 5 == 0)
                    {
                        writer.i16(i16.MaxValue);
                    }
                    if (random.Next() % 3 == 0)
                    {
                        writer.b(true);
                    }
                }


                var result = writer.ToArray();
                reader.CopyFrom(result);
                writer.Reset();
            }
        }
コード例 #2
0
        public void ResetSet()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(8);

            writer.i32(666);
            var bitsWritten   = writer.BitsWritten;
            var bitsAvailable = writer.BitsAvailable;

            writer.Reset();
            Assert.AreEqual(0, writer.BitsWritten);

            writer.i32(666);
            Assert.AreEqual(bitsWritten, writer.BitsWritten);
            Assert.AreEqual(bitsAvailable, writer.BitsAvailable);
            writer.i32(-273);
            writer.b(true);
            writer.i64(1234567890);
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >();

            reader.CopyFrom(writer.ToArray());
            Assert.AreEqual(666, reader.i32());
            var bitsRead = reader.BitsRead;

            reader.i32();
            reader.SetPosition(bitsRead);
            Assert.AreEqual(-273, reader.i32());
            var bitPosition = reader.BitsRead;

            reader.b();
            reader.SetPosition(bitPosition);
            Assert.True(reader.b());
        }
コード例 #3
0
        public void LongReadWrite()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >();

            writer.i64(i64.MaxValue);;
            var data   = writer.ToArray();
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >();

            reader.CopyFrom(data);
            Assert.AreEqual(i64.MaxValue, reader.i64());
        }
コード例 #4
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());
        }
コード例 #5
0
        public void ToArrayFromFrom()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(100);

            writer.i64(i64.MaxValue);
            writer.i32(i32.MaxValue);
            writer.i16(i16.MaxValue);
            var result = writer.ToArray();
            var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >();

            reader.CopyFrom(result);
            Assert.AreEqual(i64.MaxValue, reader.i64());
            Assert.AreEqual(i32.MaxValue, reader.i32());
            Assert.AreEqual(i16.MaxValue, reader.i16());
            reader.CopyFrom(result);
            Assert.AreEqual(i64.MaxValue, reader.i64());
            Assert.AreEqual(i32.MaxValue, reader.i32());
            Assert.AreEqual(i16.MaxValue, reader.i16());
        }
コード例 #6
0
        public void ToSpanFromFrom()
        {
            var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(100);

            writer.i64(i64.MaxValue);
            writer.i32(i32.MaxValue);
            writer.i16(i16.MaxValue);
            Span <byte>         span = new byte[writer.LengthWritten];
            ReadOnlySpan <byte> read = span;

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

            reader.CopyFrom(read);
            Assert.AreEqual(i64.MaxValue, reader.i64());
            Assert.AreEqual(i32.MaxValue, reader.i32());
            Assert.AreEqual(i16.MaxValue, reader.i16());
            reader.CopyFrom(read);
            Assert.AreEqual(i64.MaxValue, reader.i64());
            Assert.AreEqual(i32.MaxValue, reader.i32());
            Assert.AreEqual(i16.MaxValue, reader.i16());
        }