public void CanReadMultipleUnicodeCharacters() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("تست")); Assert.AreEqual(stack.Read(), 'ت'); Assert.AreEqual(stack.Read(), 'س'); Assert.AreEqual(stack.Read(), 'ت'); }
public void CanReadSingleCharacterBuffer() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("abc")); Assert.AreEqual(stack.Read(), 'a'); Assert.AreEqual(stack.Read(), 'b'); Assert.AreEqual(stack.Read(), 'c'); }
/// <summary> /// Reads a single byte as an integer from the stream. Returns -1 if no /// data is left to read. /// </summary> /// <returns> /// The <see cref="byte" /> that was read. /// </returns> public int Read() { int value = -1; while (value == -1) { if (!streamStack.HasData()) { if (StreamData() == 0) { return -1; } } value = streamStack.Read(); } return value; }
public void CanReadAcrossMultipleBuffers() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("ars")); stack.Push(TestUtil.StringToByteNoBom("6ch")); var buffer = new byte[6]; stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "6chars"); }
public void ReadReturnsZeroOnNoData() { var stack = new BinaryStreamStack(Encoding.UTF8); var buffer = new byte[6]; int amountRead = stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "\0\0\0\0\0\0"); Assert.AreEqual(amountRead, 0); }
public void ReadCorrectlyHandlesSmallerBufferThenStream() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("6chars")); var buffer = new byte[4]; stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "6cha"); buffer = new byte[2]; stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "rs"); }
public void ReadCorrectlyHandlesLargerBufferThenStream() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("6chars")); var buffer = new byte[10]; int amountRead = stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "6chars\0\0\0\0"); Assert.AreEqual(amountRead, 6); }
public void ReadCanResumeInterruptedStream() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("6chars")); var buffer = new byte[4]; int amountRead = stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "6cha"); Assert.AreEqual(amountRead, 4); stack.Push(TestUtil.StringToByteNoBom("14intermission")); buffer = new byte[14]; amountRead = stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "14intermission"); Assert.AreEqual(amountRead, 14); buffer = new byte[2]; amountRead = stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "rs"); Assert.AreEqual(amountRead, 2); }
public void MixReadAndReadLineWithInterrupt() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("6chars" + Environment.NewLine + "Resume" + Environment.NewLine)); Assert.AreEqual(stack.Read(), '6'); Assert.AreEqual(stack.ReadLine(), "chars"); stack.Push(TestUtil.StringToByteNoBom("Interrupt" + Environment.NewLine)); Assert.AreEqual(stack.ReadLine(), "Interrupt"); Assert.AreEqual(stack.Read(), 'R'); Assert.AreEqual(stack.ReadLine(), "esume"); }
public void MixReadAndReadBufferWithMultipleStreams() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("7inners")); stack.Push(TestUtil.StringToByteNoBom("6chars")); var buffer = new byte[2]; Assert.AreEqual(stack.Read(), '6'); int amountRead = stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "ch"); Assert.AreEqual(amountRead, 2); Assert.AreEqual(stack.Read(), 'a'); Assert.AreEqual(stack.Read(), 'r'); amountRead = stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "s7"); Assert.AreEqual(amountRead, 2); Assert.AreEqual(stack.Read(), 'i'); Assert.AreEqual(stack.Read(), 'n'); Assert.AreEqual(stack.Read(), 'n'); Assert.AreEqual(stack.Read(), 'e'); amountRead = stack.Read(buffer, 0, buffer.Length); Assert.AreEqual(Encoding.UTF8.GetString(buffer), "rs"); Assert.AreEqual(amountRead, 2); }
public void CanReadSingleBuffer() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("6chars")); var buffer = new byte[Encoding.UTF8.GetByteCount("6chars")]; stack.Read(buffer, 0, buffer.Length); string result = Encoding.UTF8.GetString(buffer); Assert.AreEqual(result, "6chars"); }
public void CanReadMixedUnicodeAndAsciiCharacters() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("تست.jpg")); Assert.AreEqual(stack.Read(), 'ت'); Assert.AreEqual(stack.Read(), 'س'); Assert.AreEqual(stack.Read(), 'ت'); Assert.AreEqual(stack.Read(), '.'); Assert.AreEqual(stack.Read(), 'j'); Assert.AreEqual(stack.Read(), 'p'); Assert.AreEqual(stack.Read(), 'g'); }
public void CanReadSingleUnicodeCharacter() { var stack = new BinaryStreamStack(Encoding.UTF8); stack.Push(TestUtil.StringToByteNoBom("é")); Assert.Equal(stack.Read(), 'é'); }