public async Task TestPeekAndBreake() { var reader = new NetworkReader(baseStream); Assert.AreEqual <char?>('\u2661', await reader.PeekCharAsync().ConfigureAwait(false)); Assert.AreEqual( BitConverter.ToString(new byte[] { 0xe2 }), BitConverter.ToString(await reader.ReadBytesAsync(1)) ); Assert.AreEqual( BitConverter.ToString(new byte[] { 0x99, 0xa1, 0x0d, 0x0a }), BitConverter.ToString(await reader.ReadBytesAsync(4)) ); }
public async Task TestReadUntil() { var baseStream = new MemoryStream(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }); var reader = new NetworkReader(baseStream); var readed = await reader.ReadUntilAsync(new byte[] { 4, 5, 6 }).ConfigureAwait(false); Assert.AreEqual("00-01-02-03", BitConverter.ToString(readed.ToArray())); Assert.AreEqual("04-05-06-07-08-09", BitConverter.ToString(await reader.ReadBytesAsync(6).ConfigureAwait(false))); }
public async Task TestBrokenRead() { var reader = new NetworkReader(baseStream); // remove the first byte to kill the char Assert.AreEqual( BitConverter.ToString(new byte[] { 0xe2 }), BitConverter.ToString(await reader.ReadBytesAsync(1)) ); // read an undefined char Assert.AreEqual(65533, (int)(await reader.ReadCharAsync().ConfigureAwait(false))); }
public async Task TestReadBytes() { var reader = new NetworkReader(baseStream); await reader.ReadLineAsync().ConfigureAwait(false); await reader.ReadLineAsync().ConfigureAwait(false); var buffer = await reader.ReadBytesAsync(8).ConfigureAwait(false); Assert.AreEqual( BitConverter.ToString(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 }), BitConverter.ToString(buffer) ); }
public async Task <int> DeserializeAsync(Stream stream, int maxLength = int.MaxValue) { using (var br = new NetworkReader(stream, Encoding.UTF8, true)) { uint length; br.ReadVarInt(out length); if (length > 0 && length < maxLength) { byte dataLength = br.ReadVarInt(out packetId); data = new ArraySegment <byte>(new byte[length - dataLength]); await br.ReadBytesAsync(data.Array, 0, data.Count); } return((int)length); } }