示例#1
0
        public void Peek()
        {
            var str = "Hello World!";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal('H', bs.Peek());
                }
        }
示例#2
0
 public void ReadMoreBytesThanInStream()
 {
     using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("Hello World!")))
         using (var bs = new BencodeStream(ms))
         {
             var bytes = bs.Read(20);
             Assert.Equal(12, bytes.Length);
             Assert.Equal("Hello World!", Encoding.UTF8.GetString(bytes));
         }
 }
示例#3
0
#pragma warning disable 1591
        protected override void EncodeObject(BencodeStream stream)
        {
            stream.Write('d');
            foreach (var kvPair in this)
            {
                kvPair.Key.EncodeTo(stream);
                kvPair.Value.EncodeTo(stream);
            }
            stream.Write('e');
        }
示例#4
0
 public void ReadZeroBytes()
 {
     using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("Hello World!")))
         using (var bs = new BencodeStream(ms))
         {
             var bytes = bs.Read(0);
             Assert.Equal(0, bytes.Length);
             Assert.Equal("", Encoding.UTF8.GetString(bytes));
         }
 }
示例#5
0
        public void ReadPreviousAtStartOfStream()
        {
            var str = "Hello World!";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal(-1, bs.ReadPrevious());
                }
        }
示例#6
0
        public void EndOfStream()
        {
            var str = "Hello World!";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    bs.Read(12);
                    Assert.True(bs.EndOfStream);
                    Assert.Equal(-1, bs.Read());
                }
        }
示例#7
0
        public void PeekAtEndOfStreamThenReadBytes()
        {
            var str = "abcdefghijkl";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    bs.Read(12);
                    Assert.Equal(-1, bs.Peek());
                    Assert.Equal(0, bs.Read(4).Length);
                }
        }
示例#8
0
        public void ReadUnnaffectedByReadPrevious()
        {
            var str = "abcdefghijkl";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal('a', bs.Read());
                    bs.ReadPrevious();
                    Assert.Equal('b', bs.Read());
                }
        }
示例#9
0
        public void ReadPreviousChar()
        {
            var str = "Hello World!";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal(default(char), bs.ReadPreviousChar());
                    bs.Read(1);
                    Assert.Equal('H', bs.ReadPreviousChar());
                }
        }
示例#10
0
        public void ReadPreviousUnaffectedByPeek()
        {
            var str = "Hello World!";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    bs.Read(1);
                    Assert.Equal('H', bs.ReadPrevious());
                    Assert.Equal('e', bs.Peek());
                    Assert.Equal('H', bs.ReadPrevious());
                }
        }
示例#11
0
        public void ReadChangeStreamPosition()
        {
            var str = "Hello World!";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal('H', bs.Read());
                    Assert.Equal('e', bs.Read());
                    bs.Position -= 1;
                    Assert.Equal('e', bs.Read());
                }
        }
示例#12
0
        public void PeekAfterPositionChange()
        {
            var str = "abcdefghijkl";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal(0, bs.Position);
                    Assert.Equal('a', bs.PeekChar());
                    bs.Position = 1;
                    Assert.Equal(1, bs.Position);
                    Assert.Equal('b', bs.PeekChar());
                }
        }
示例#13
0
        public void ReadBytesChangesStreamPosition()
        {
            var str = "Hello World!";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal(0, bs.Position);

                    var bytes = bs.Read(str.Length);
                    Assert.Equal(12, bytes.Length);
                    Assert.Equal(str, Encoding.UTF8.GetString(bytes));

                    Assert.Equal(12, bs.Position);
                }
        }
示例#14
0
        public void PeekAreChangedAfterReadSingleByte()
        {
            var str = "abcdefghijkl";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    byte[] bytes;

                    Assert.Equal('a', bs.Peek());

                    bytes = bs.Read(1);
                    Assert.Equal('a', (char)bytes[0]);
                    Assert.Equal('b', bs.Peek());

                    bytes = bs.Read(1);
                    Assert.Equal('b', (char)bytes[0]);
                    Assert.Equal('c', bs.Peek());
                }
        }
示例#15
0
        public void Read()
        {
            var str = "Hello World!";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal('H', bs.Read());
                    Assert.Equal('e', bs.Read());
                    Assert.Equal('l', bs.Read());
                    Assert.Equal('l', bs.Read());
                    Assert.Equal('o', bs.Read());
                    Assert.Equal(' ', bs.Read());
                    Assert.Equal('W', bs.Read());
                    Assert.Equal('o', bs.Read());
                    Assert.Equal('r', bs.Read());
                    Assert.Equal('l', bs.Read());
                    Assert.Equal('d', bs.Read());
                    Assert.Equal('!', bs.Read());
                    Assert.Equal(-1, bs.Read());
                }
        }
示例#16
0
        public void PeekAreChangedAfterRead()
        {
            var str = "abcdefghijkl";

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                using (var bs = new BencodeStream(ms))
                {
                    Assert.Equal('a', bs.Peek());
                    Assert.Equal('a', bs.Read());

                    Assert.Equal('b', bs.Peek());
                    Assert.Equal('b', bs.Read());

                    Assert.Equal('c', bs.Peek());
                    Assert.Equal('c', bs.Read());

                    Assert.Equal('d', bs.Peek());
                    Assert.Equal('d', bs.Read());

                    Assert.Equal('e', bs.Peek());
                    Assert.Equal('e', bs.Read());
                }
        }
示例#17
0
        /// <summary>
        /// Encodes the torrent and writes it to the stream.
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        protected override void EncodeObject(BencodeStream stream)
        {
            var torrent = ToBDictionary();

            torrent.EncodeTo(stream);
        }
示例#18
0
#pragma warning disable 1591
        protected override void EncodeObject(BencodeStream stream)
        {
            stream.Write('i');
            stream.Write(Value);
            stream.Write('e');
        }
示例#19
0
#pragma warning disable 1591
        protected override void EncodeObject(BencodeStream stream)
        {
            stream.Write(_value.Length);
            stream.Write(':');
            stream.Write(_value);
        }
示例#20
0
 /// <summary>
 /// Writes the object as bencode to the specified stream.
 /// </summary>
 /// <param name="stream">The stream to write to.</param>
 /// <returns>The used stream.</returns>
 public BencodeStream EncodeTo(BencodeStream stream)
 {
     EncodeObject(stream);
     return(stream);
 }
示例#21
0
 public override IBObject Parse(BencodeStream stream)
 {
     return(Substitute.Parse(stream));
 }