Esempio n. 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));
                        }
            }
        }
Esempio n. 2
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));
     }
 }
Esempio n. 3
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));
         }
 }
Esempio n. 4
0
        public void TestControlCodedStream()
        {
            byte[] buffer;
            using (var memoryStream = new MemoryStream())
                using (var peekable = new PeekableStream(memoryStream))
                    using (var ccs = new ControlCodedStream(peekable))
                        using (var binary = new BinaryStream(ccs))
                        {
                            binary.WriteString("← ↔ →");
                            ccs.WriteControlCode(47);
                            binary.WriteChar((char)255);
                            ccs.WriteControlCode(48);
                            binary.WriteVarInt(0x1FF);
                            ccs.WriteControlCode(49);
                            binary.WriteFloat(float.NaN);
                            binary.WriteFloat(float.PositiveInfinity);
                            binary.WriteFloat(float.NegativeInfinity);
                            ccs.WriteControlCode(50);

                            Assert.Throws <ArgumentOutOfRangeException>(() => ccs.WriteControlCode(255));

                            binary.Close();
                            ccs.Close();
                            peekable.Close();
                            memoryStream.Close();
                            buffer = memoryStream.ToArray();
                        }

            for (int i = 1; i < buffer.Length; i++)
            {
                using (var memoryStream = new MemoryStream(buffer))
                    using (var slowStream = new SlowStream(memoryStream, i))
                        using (var peekable = new PeekableStream(slowStream))
                            using (var ccs = new ControlCodedStream(peekable))
                                using (var binary = new BinaryStream(ccs))
                                {
                                    Assert.AreEqual("← ↔ →", binary.ReadString());
                                    Assert.Throws <InvalidOperationException>(() => ccs.Read(new byte[1], 0, 1));
                                    Assert.AreEqual(47, ccs.ReadControlCode());
                                    Assert.AreEqual((char)255, binary.ReadChar());
                                    Assert.AreEqual(48, ccs.ReadControlCode());
                                    Assert.AreEqual(0x1FF, binary.ReadVarInt());
                                    Assert.AreEqual(49, ccs.ReadControlCode());
                                    Assert.IsNaN(binary.ReadFloat());
                                    Assert.AreEqual(-1, ccs.ReadControlCode());
                                    Assert.AreEqual(float.PositiveInfinity, binary.ReadFloat());
                                    Assert.AreEqual(float.NegativeInfinity, binary.ReadFloat());
                                    Assert.AreEqual(50, ccs.ReadControlCode());
                                    Assert.AreEqual(-1, ccs.ReadControlCode());
                                    Assert.AreEqual(0, ccs.Read(new byte[1], 0, 1));
                                }
            }
        }
        public void TestControlCodedStream()
        {
            byte[] buffer;
            using (var memoryStream = new MemoryStream())
            using (var peekable = new PeekableStream(memoryStream))
            using (var ccs = new ControlCodedStream(peekable))
            using (var binary = new BinaryStream(ccs))
            {
                binary.WriteString("← ↔ →");
                ccs.WriteControlCode(47);
                binary.WriteChar((char) 255);
                ccs.WriteControlCode(48);
                binary.WriteVarInt(0x1FF);
                ccs.WriteControlCode(49);
                binary.WriteFloat(float.NaN);
                binary.WriteFloat(float.PositiveInfinity);
                binary.WriteFloat(float.NegativeInfinity);
                ccs.WriteControlCode(50);

                Assert.Throws<ArgumentOutOfRangeException>(() => ccs.WriteControlCode(255));

                binary.Close();
                ccs.Close();
                peekable.Close();
                memoryStream.Close();
                buffer = memoryStream.ToArray();
            }

            for (int i = 1; i < buffer.Length; i++)
            {
                using (var memoryStream = new MemoryStream(buffer))
                using (var slowStream = new SlowStream(memoryStream, i))
                using (var peekable = new PeekableStream(slowStream))
                using (var ccs = new ControlCodedStream(peekable))
                using (var binary = new BinaryStream(ccs))
                {
                    Assert.AreEqual("← ↔ →", binary.ReadString());
                    Assert.Throws<InvalidOperationException>(() => ccs.Read(new byte[1], 0, 1));
                    Assert.AreEqual(47, ccs.ReadControlCode());
                    Assert.AreEqual((char) 255, binary.ReadChar());
                    Assert.AreEqual(48, ccs.ReadControlCode());
                    Assert.AreEqual(0x1FF, binary.ReadVarInt());
                    Assert.AreEqual(49, ccs.ReadControlCode());
                    Assert.IsNaN(binary.ReadFloat());
                    Assert.AreEqual(-1, ccs.ReadControlCode());
                    Assert.AreEqual(float.PositiveInfinity, binary.ReadFloat());
                    Assert.AreEqual(float.NegativeInfinity, binary.ReadFloat());
                    Assert.AreEqual(50, ccs.ReadControlCode());
                    Assert.AreEqual(-1, ccs.ReadControlCode());
                    Assert.AreEqual(0, ccs.Read(new byte[1], 0, 1));
                }
            }
        }
Esempio n. 6
0
 /// <summary>Disposes of this stream and unregisters it from its parent.</summary>
 protected override void Dispose(bool disposing)
 {
     if (disposing && _parent != null)
     {
         if (_parent._peeks != null)
         {
             _parent._peeks.Remove(this);
         }
         _parent = null;
         _buffer = null;
     }
     base.Dispose(disposing);
 }
Esempio n. 7
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));
     }
 }
Esempio n. 8
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));
         }
 }
Esempio n. 9
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));
         }
     }
 }
Esempio n. 10
0
 /// <summary>Constructor.</summary>
 /// <param name="underlyingStream">The underlying stream on which all operations are to be performed.</param>
 public ControlCodedStream(PeekableStream underlyingStream)
 {
     _stream = underlyingStream;
 }
Esempio n. 11
0
 /// <summary>Constructor.</summary>
 /// <param name="underlyingStream">The underlying stream on which all operations are to be performed.</param>
 public ControlCodedStream(PeekableStream underlyingStream)
 {
     _stream = underlyingStream;
 }
Esempio n. 12
0
 /// <summary>Disposes of this stream and unregisters it from its parent.</summary>
 protected override void Dispose(bool disposing)
 {
     if (disposing && _parent != null)
     {
         if (_parent._peeks != null)
             _parent._peeks.Remove(this);
         _parent = null;
         _buffer = null;
     }
     base.Dispose(disposing);
 }
Esempio n. 13
0
 internal PeekStream(PeekableStream parent)
 {
     _parent = parent;
     IsValid = true;
 }
Esempio n. 14
0
 internal PeekStream(PeekableStream parent)
 {
     _parent = parent;
     IsValid = true;
 }