public void TestStreamCopy() { var inNetworkBuffer = new NetworkBuffer(); var copyNetworkBuffer = new NetworkBuffer(); byte initialValue1 = 56; byte initialValue2 = 24; inNetworkBuffer.WriteByte(initialValue1); inNetworkBuffer.WriteByte(initialValue2); byte copyValue1 = 27; byte copyValue2 = 100; copyNetworkBuffer.WriteByte(copyValue1); copyNetworkBuffer.WriteByte(copyValue2); inNetworkBuffer.CopyFrom(copyNetworkBuffer, 2); var outNetworkBuffer = new NetworkBuffer(inNetworkBuffer.ToArray()); Assert.That(outNetworkBuffer.ReadByte(), Is.EqualTo(initialValue1)); Assert.That(outNetworkBuffer.ReadByte(), Is.EqualTo(initialValue2)); Assert.That(outNetworkBuffer.ReadByte(), Is.EqualTo(copyValue1)); Assert.That(outNetworkBuffer.ReadByte(), Is.EqualTo(copyValue2)); }
public void TestToArray() { var inNetworkBuffer = new NetworkBuffer(); inNetworkBuffer.WriteByte(5); inNetworkBuffer.WriteByte(6); Assert.That(inNetworkBuffer.ToArray().Length, Is.EqualTo(2)); }
public void TestSetLength2() { var networkBuffer = new NetworkBuffer(4); networkBuffer.WriteByte(1); networkBuffer.WriteByte(1); networkBuffer.WriteByte(1); networkBuffer.WriteByte(1); networkBuffer.SetLength(0); // position should never go beyond length Assert.That(networkBuffer.Position, Is.EqualTo(0)); }
public void TestLength() { var inNetworkBuffer = new NetworkBuffer(4); Assert.That(inNetworkBuffer.Length, Is.EqualTo(0)); inNetworkBuffer.WriteByte(1); Assert.That(inNetworkBuffer.Length, Is.EqualTo(1)); inNetworkBuffer.WriteByte(2); Assert.That(inNetworkBuffer.Length, Is.EqualTo(2)); inNetworkBuffer.WriteByte(3); Assert.That(inNetworkBuffer.Length, Is.EqualTo(3)); inNetworkBuffer.WriteByte(4); Assert.That(inNetworkBuffer.Length, Is.EqualTo(4)); }
public void TestCapacityGrowth() { var inNetworkBuffer = new NetworkBuffer(4); Assert.That(inNetworkBuffer.Capacity, Is.EqualTo(4)); inNetworkBuffer.WriteByte(1); inNetworkBuffer.WriteByte(2); inNetworkBuffer.WriteByte(3); inNetworkBuffer.WriteByte(4); inNetworkBuffer.WriteByte(5); // buffer should grow and the reported length // should not waste any space // note MemoryStream makes a distinction between Length and Capacity Assert.That(inNetworkBuffer.Length, Is.EqualTo(5)); Assert.That(inNetworkBuffer.Capacity, Is.GreaterThanOrEqualTo(5)); }
public void TestInOutBytes() { var buffer = new byte[100]; byte someNumber = 0xff; var outNetworkBuffer = new NetworkBuffer(buffer); outNetworkBuffer.WriteByte(someNumber); var inNetworkBuffer = new NetworkBuffer(buffer); Assert.That(inNetworkBuffer.ReadByte(), Is.EqualTo(someNumber)); }
public override void Send(IConnection connection, byte[] buffer, int offset, int size) { int length = size + lengthAdjustment; if (lengthIncludesLengthFieldLength) { length += lengthFieldLength; } if (length < 0) { throw new ArgumentException( "Adjusted frame length (" + length + ") is less than zero"); } NetworkBuffer outBuffer = new NetworkBuffer(size + lengthFieldLength, true); switch (lengthFieldLength) { case 1: if (length >= 256) { throw new ArgumentException( "length does not fit into a byte: " + length); } outBuffer.WriteByte((byte)length); break; case 2: if (length >= 65536) { throw new ArgumentException( "length does not fit into a short integer: " + length); } outBuffer.WriteInt16((short)length); break; case 4: outBuffer.WriteInt32(length); break; default: throw new ArgumentException("should not reach here"); } outBuffer.WriteBytes(buffer, offset, size); sendBuffDown(connection, outBuffer.GetBuffer(), outBuffer.ReadOffset, outBuffer.ReadableBytes); }