Example #1
0
        public void TestPeekableStreamRead()
        {
            var inputStr = "← ↔ →";
            var buffer   = inputStr.ToUtf8();

            for (int i = 1; i <= buffer.Length; i++)
            {
                using (var mem = new MemoryStream(buffer))
                    using (var slow = new SlowStream(mem, i))
                        using (var peekable = new PeekableStream(slow))
                        {
                            using (var peek = peekable.GetPeekStream())
                            {
                                var buf = peek.Read(11);
                                Assert.AreEqual(inputStr, buf.FromUtf8());
                                Assert.AreEqual(0, peek.Read(buf, 0, 1));
                            }
                            var buf2 = peekable.Read(11);
                            Assert.AreEqual(inputStr, buf2.FromUtf8());
                            Assert.AreEqual(0, peekable.Read(buf2, 0, 1));
                            using (var peek = peekable.GetPeekStream())
                                Assert.AreEqual(0, peek.Read(buf2, 0, 1));
                        }
            }
        }
 public void TestSingleBytePeekableStreamRead()
 {
     using (var mem = new MemoryStream(new byte[] { 47 }))
     using (var peekable = new PeekableStream(mem))
     {
         var buf = new byte[1];
         using (var peek = peekable.GetPeekStream())
         {
             Assert.AreEqual(1, peek.Read(buf, 0, 1));
             Assert.AreEqual(buf[0], 47);
             Assert.AreEqual(0, peek.Read(buf, 0, 1));
         }
         Assert.AreEqual(1, peekable.Read(buf, 0, 1));
         Assert.AreEqual(buf[0], 47);
         Assert.AreEqual(0, peekable.Read(buf, 0, 1));
         using (var peek = peekable.GetPeekStream())
             Assert.AreEqual(0, peek.Read(buf, 0, 1));
     }
 }
 public void TestEmptyPeekableStreamRead()
 {
     using (var mem = new MemoryStream(new byte[0]))
     using (var peekable = new PeekableStream(mem))
     {
         using (var peek = peekable.GetPeekStream())
             Assert.AreEqual(0, peek.Read(new byte[1], 0, 1));
         Assert.AreEqual(0, peekable.Read(new byte[1], 0, 1));
     }
 }
Example #4
0
 public void TestSingleBytePeekableStreamRead()
 {
     using (var mem = new MemoryStream(new byte[] { 47 }))
         using (var peekable = new PeekableStream(mem))
         {
             var buf = new byte[1];
             using (var peek = peekable.GetPeekStream())
             {
                 Assert.AreEqual(1, peek.Read(buf, 0, 1));
                 Assert.AreEqual(buf[0], 47);
                 Assert.AreEqual(0, peek.Read(buf, 0, 1));
             }
             Assert.AreEqual(1, peekable.Read(buf, 0, 1));
             Assert.AreEqual(buf[0], 47);
             Assert.AreEqual(0, peekable.Read(buf, 0, 1));
             using (var peek = peekable.GetPeekStream())
                 Assert.AreEqual(0, peek.Read(buf, 0, 1));
         }
 }
Example #5
0
 public void TestEmptyPeekableStreamRead()
 {
     using (var mem = new MemoryStream(new byte[0]))
         using (var peekable = new PeekableStream(mem))
         {
             using (var peek = peekable.GetPeekStream())
                 Assert.AreEqual(0, peek.Read(new byte[1], 0, 1));
             Assert.AreEqual(0, peekable.Read(new byte[1], 0, 1));
         }
 }
Example #6
0
 /// <summary>
 /// Reads a control code from the stream at the current position. If there is no control code at the current position,
 /// returns <c>-1</c>. Otherwise returns the code read. Throws <see cref="EndOfStreamException"/> if the stream ends in
 /// the middle of a control code.
 /// </summary>
 public virtual int ReadControlCode()
 {
     using (var peek = _stream.GetPeekStream())
     {
         byte[] read = peek.Read(2);
         if (read.Length == 0)
         {
             return(-1);
         }
         else if (read.Length == 1)
         {
             throw new EndOfStreamException("The end of the stream was encountered in the middle of an escape sequence.");
         }
         if (read[0] != 255)
         {
             return(-1);
         }
         _stream.SkipExactly(2);
         return(read[1]);
     }
 }
 public void TestPeekableStreamRead()
 {
     var inputStr = "← ↔ →";
     var buffer = inputStr.ToUtf8();
     for (int i = 1; i <= buffer.Length; i++)
     {
         using (var mem = new MemoryStream(buffer))
         using (var slow = new SlowStream(mem, i))
         using (var peekable = new PeekableStream(slow))
         {
             using (var peek = peekable.GetPeekStream())
             {
                 var buf = peek.Read(11);
                 Assert.AreEqual(inputStr, buf.FromUtf8());
                 Assert.AreEqual(0, peek.Read(buf, 0, 1));
             }
             var buf2 = peekable.Read(11);
             Assert.AreEqual(inputStr, buf2.FromUtf8());
             Assert.AreEqual(0, peekable.Read(buf2, 0, 1));
             using (var peek = peekable.GetPeekStream())
                 Assert.AreEqual(0, peek.Read(buf2, 0, 1));
         }
     }
 }