public void TestPacketReadingWithTooLittleData() { MemoryStream memStream = new MemoryStream(); BinaryWriter bWriter = new BinaryWriter(memStream); byte[] firstTwentyBytes = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05 }; byte[] lastThreeBytes = new byte[] { 0x09, 0x13, 0x41 }; // we'll write 23 random bytes. bWriter.Write(firstTwentyBytes); bWriter.Write(lastThreeBytes); byte[] memStreamArr = memStream.ToArray(); ArraySegment <byte> buf = new ArraySegment <byte>(memStreamArr, 0, memStreamArr.Length); TestPacketIn packet = new TestPacketIn(memStreamArr); Assert.IsTrue(ByteArrayEquals(firstTwentyBytes, packet.ReadBytes(20))); Assert.AreEqual(float.NaN, packet.ReadFloat()); Assert.AreEqual(0, packet.ReadInt32()); Assert.AreEqual <uint>(0, packet.ReadUInt32()); Assert.AreEqual(double.NaN, packet.ReadDouble()); Assert.AreEqual(0, packet.ReadInt64()); Assert.AreEqual <ulong>(0, packet.ReadUInt64()); Assert.AreEqual(22, packet.Seek(2, SeekOrigin.Current)); Assert.AreEqual(0, packet.ReadInt16()); Assert.AreEqual(0, packet.ReadUInt16()); Assert.AreEqual(23, packet.Seek(0, SeekOrigin.End)); Assert.AreEqual(0, packet.ReadByte()); Assert.AreEqual(0, packet.ReadSByte()); Assert.IsFalse(packet.ReadBoolean()); Assert.AreEqual('\0', packet.ReadChar()); Assert.AreEqual(0, packet.ReadBigInteger(1).LongValue()); Assert.AreEqual(0, packet.ReadChars(1).Length); MemoryStream memStreamTwo = new MemoryStream(); BinaryWriter bWriterTwo = new BinaryWriter(memStreamTwo); byte[] truncatedStrBytes = UTF8Encoding.UTF8.GetBytes("thisisatruncatedstr"); // we'll write 23 random bytes. bWriterTwo.Write((byte)truncatedStrBytes.Length); bWriterTwo.Write(truncatedStrBytes); byte[] truncatedBytes = new byte[] { 0x03, 0x04, 0x05, 0x09 }; bWriterTwo.Write(truncatedBytes); byte[] arr2 = memStreamTwo.ToArray(); TestPacketIn packetTwo = new TestPacketIn(arr2); Assert.AreEqual(packetTwo.ReadPascalString(), "thisisatruncatedstr"); Assert.IsTrue(ByteArrayEquals(packetTwo.ReadBytes(10), truncatedBytes)); }
public void TestPacketManagementFunctions() { MemoryStream memStream = new MemoryStream(); BinaryWriter bWriter = new BinaryWriter(memStream); byte[] firstTwentyBytes = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05 }; byte[] lastThreeBytes = new byte[] { 0x09, 0x13, 0x41 }; // we'll write 23 random bytes. bWriter.Write(firstTwentyBytes); bWriter.Write(lastThreeBytes); byte[] memStreamArr = memStream.ToArray(); TestPacketIn packet = new TestPacketIn(memStreamArr); Assert.AreEqual((long)10, packet.Seek(10, SeekOrigin.Begin)); Assert.AreEqual((long)20, packet.Seek(10, SeekOrigin.Current)); Assert.AreEqual((long)23, packet.Seek(0, SeekOrigin.End)); packet.Position = 0; Assert.AreEqual(0, packet.Position); packet.SkipBytes(9); Assert.AreEqual(9, packet.Position); PacketId serviceId = new PacketId(ServiceType.Authentication, 1); packet.SetPacketID(serviceId); Assert.AreEqual(serviceId, packet.PacketId); }
public void TestPacketReading() { MemoryStream memStream = new MemoryStream(); BinaryWriter bWriter = new BinaryWriter(memStream); bWriter.Write((byte)122); bWriter.Write((sbyte)-122); bWriter.Write((short)-14323); bWriter.Write((ushort)14323); bWriter.Write((int)-4124444); bWriter.Write((uint)4124444); bWriter.Write((ulong)412124553); bWriter.Write((long)-412124553); bWriter.Write((float)450.2500f); bWriter.Write((double)90350.45350d); bWriter.Write("test"); bWriter.Write(UTF8Encoding.UTF8.GetBytes(new char[] { 't', 'e', 's', 't' })); bWriter.Write((byte)0); byte[] testBytes = new byte[] { 0x01, 0x02, 0x03, 0x02, 0x01 }; bWriter.Write(testBytes); BigInteger bi = new BigInteger(1000000); byte[] biBytes = bi.GetBytes(); bWriter.Write(biBytes); bWriter.Write((byte)biBytes.Length); bWriter.Write(biBytes); bWriter.Write(false); byte[] addrBytes = IPAddress.Parse("192.168.1.100").GetAddressBytes(); bWriter.Write(addrBytes); bWriter.Write(UTF8Encoding.UTF8.GetBytes("tset")); bWriter.Write((byte)0); bWriter.Write(UTF8Encoding.UTF8.GetBytes(new char[] { 'z' })); bWriter.Write(UTF8Encoding.UTF8.GetBytes("rabooftset")); byte[] bytes = memStream.ToArray(); TestPacketIn packet = new TestPacketIn(bytes); Assert.AreEqual((byte)122, packet.ReadByte()); Assert.AreEqual((sbyte)-122, packet.ReadSByte()); Assert.AreEqual((short)-14323, packet.ReadInt16()); Assert.AreEqual((ushort)14323, packet.ReadUInt16()); Assert.AreEqual((int)-4124444, packet.ReadInt32()); Assert.AreEqual((uint)4124444, packet.ReadUInt32()); Assert.AreEqual((ulong)412124553, packet.ReadUInt64()); Assert.AreEqual((long)-412124553, packet.ReadInt64()); Assert.AreEqual((float)450.2500f, packet.ReadFloat()); Assert.AreEqual((double)90350.45350d, packet.ReadDouble()); Assert.AreEqual("test", packet.ReadPascalString()); Assert.AreEqual("test", packet.ReadCString()); Assert.IsTrue(ByteArrayEquals(testBytes, packet.ReadBytes(5))); Assert.AreEqual(bi, packet.ReadBigInteger(biBytes.Length)); Assert.AreEqual(bi, packet.ReadBigIntegerLengthValue()); Assert.AreEqual(false, packet.ReadBoolean()); Assert.AreEqual("192.168.1.100", packet.ReadIPAddress().Address); Assert.AreEqual("test", packet.ReadReversedString()); Assert.AreEqual('z', packet.ReadChar()); Assert.AreEqual("testfoobar", packet.ReadReversedPascalString(10)); Assert.AreEqual(memStream.Length, packet.Length); Assert.AreEqual(memStream.Position, packet.Position); }
public void TestPacketReadingWithTooLittleData() { MemoryStream memStream = new MemoryStream(); BinaryWriter bWriter = new BinaryWriter(memStream); byte[] firstTwentyBytes = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05 }; byte[] lastThreeBytes = new byte[] { 0x09, 0x13, 0x41 }; // we'll write 23 random bytes. bWriter.Write(firstTwentyBytes); bWriter.Write(lastThreeBytes); byte[] memStreamArr = memStream.ToArray(); ArraySegment<byte> buf = new ArraySegment<byte>(memStreamArr, 0, memStreamArr.Length); TestPacketIn packet = new TestPacketIn(memStreamArr); Assert.IsTrue(ByteArrayEquals(firstTwentyBytes, packet.ReadBytes(20))); Assert.AreEqual(float.NaN, packet.ReadFloat()); Assert.AreEqual(0, packet.ReadInt32()); Assert.AreEqual<uint>(0, packet.ReadUInt32()); Assert.AreEqual(double.NaN, packet.ReadDouble()); Assert.AreEqual(0, packet.ReadInt64()); Assert.AreEqual<ulong>(0, packet.ReadUInt64()); Assert.AreEqual(22, packet.Seek(2, SeekOrigin.Current)); Assert.AreEqual(0, packet.ReadInt16()); Assert.AreEqual(0, packet.ReadUInt16()); Assert.AreEqual(23, packet.Seek(0, SeekOrigin.End)); Assert.AreEqual(0, packet.ReadByte()); Assert.AreEqual(0, packet.ReadSByte()); Assert.IsFalse(packet.ReadBoolean()); Assert.AreEqual('\0', packet.ReadChar()); Assert.AreEqual(0, packet.ReadBigInteger(1).LongValue()); Assert.AreEqual(0, packet.ReadChars(1).Length); MemoryStream memStreamTwo = new MemoryStream(); BinaryWriter bWriterTwo = new BinaryWriter(memStreamTwo); byte[] truncatedStrBytes = UTF8Encoding.UTF8.GetBytes("thisisatruncatedstr"); // we'll write 23 random bytes. bWriterTwo.Write((byte)truncatedStrBytes.Length); bWriterTwo.Write(truncatedStrBytes); byte[] truncatedBytes = new byte[] { 0x03, 0x04, 0x05, 0x09 }; bWriterTwo.Write(truncatedBytes); byte[] arr2 = memStreamTwo.ToArray(); TestPacketIn packetTwo = new TestPacketIn(arr2); Assert.AreEqual(packetTwo.ReadPascalString(), "thisisatruncatedstr"); Assert.IsTrue(ByteArrayEquals(packetTwo.ReadBytes(10), truncatedBytes)); }