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()); }
public void StringWriteRead() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.c("lahoda.prо/минск"); var allocated = new byte[ushort.MaxValue]; writer.ToSpan(allocated); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length); reader.CopyFrom(allocated); Assert.AreEqual("lahoda.prо/минск", reader.String()); }
public void u8ArrayMaxWriteRead() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); var input = new byte[writer.Options.U8SpanLengthMax]; writer.u8(input); var allocated = new byte[ushort.MaxValue]; writer.ToSpan(allocated); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length); reader.CopyFrom(allocated); Assert.AreEqual(writer.Options.U8SpanLengthMax, reader.u8SpanLengthPeek()); }
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()); }
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()); }
public void i16ReadWriteLimits() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.i16(-1, -2, 2); writer.i16(-1, 4); var allocated = new byte[i16.MaxValue]; writer.ToSpan(allocated); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length); reader.CopyFrom(allocated); Assert.AreEqual(-1, reader.i16(-2, 2)); Assert.AreEqual(-1, reader.i16(4)); }
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()); }
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>()); }
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()); }
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); }
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()); }