示例#1
0
        private BDictionary ReadMetaInfo()
        {
            var metadata = BDecoder.Decode(Data) as BDictionary;

            CheckMetadata(metadata);
            return(metadata);
        }
示例#2
0
        public void DecodeString()
        {
            string encodedString  = "3:moo";
            string expectedString = "moo";

            Console.WriteLine(encodedString);
            Console.WriteLine(expectedString);
            Assert.AreEqual(expectedString, BDecoder.Decode(encodedString).ToString());
        }
示例#3
0
        public void DecodeDictionary()
        {
            string bencodedDict   = "d1:0i0e1:1i1e1:2i2e1:3i3e1:4i4ee";
            string expectedResult = "dictionary: { 0->0, 1->1, 2->2, 3->3, 4->4 }";
            var    result         = BDecoder.Decode(bencodedDict);

            Console.WriteLine(bencodedDict);
            Console.WriteLine(result.ToString());
            Assert.AreEqual(expectedResult, result.ToString());
        }
示例#4
0
            public async Task Should_Throw_Exception_When_Stream_Is_Null()
            {
                // Given
                var decoder = new BDecoder();

                // When
                var result = await Record.ExceptionAsync(() => decoder.DecodeAsync(null));

                // Then
                Assert.IsType <ArgumentNullException>(result);
            }
示例#5
0
        public void DecodeList()
        {
            string bencodedList   = "li0ei1ei2ei3ei4ee";
            string expectedResult = "list: { 0, 1, 2, 3, 4 }";
            var    result         = BDecoder.Decode(bencodedList);

            Console.WriteLine(bencodedList);
            Console.WriteLine(result.ToString());

            Assert.AreEqual(expectedResult, result.ToString());
        }
示例#6
0
            public async Task Should_Decode_Dictionary(string encoded, int expectedItems)
            {
                // Given
                var decoder = new BDecoder();

                // When
                var result = await decoder.DecodeAsync(encoded);

                // Then
                Assert.IsType <BDictionary>(result);
                Assert.Equal(expectedItems, ((BDictionary)result).Count);
            }
示例#7
0
            public async Task Should_Decode_Number(string encoded, long decoded)
            {
                // Given
                var decoder = new BDecoder();

                // When
                var result = await decoder.DecodeAsync(encoded);

                // Then
                Assert.IsType <BNumber>(result);
                Assert.Equal(decoded, ((BNumber)result).Value);
            }
示例#8
0
            public async Task Should_Decode_String(string encoded, string decoded)
            {
                // Given
                var decoder = new BDecoder();

                // When
                var result = await decoder.DecodeAsync(encoded);

                // Then
                Assert.IsType <BString>(result);
                Assert.Equal(decoded, ((BString)result).ToString());
            }
示例#9
0
        public void DecodeInteger()
        {
            string encodedString  = "i3e";
            int    expectedResult = 3;
            var    parsedInt      = Convert.ToInt32(
                BDecoder.Decode(encodedString).ToString());

            Console.WriteLine(encodedString);
            Console.WriteLine(parsedInt);

            Assert.AreEqual(expectedResult, parsedInt);
        }
示例#10
0
            public async Task Should_Decode_Zero_Length_String()
            {
                // Given
                var decoder = new BDecoder();

                // When
                var result = await decoder.DecodeAsync("0:");

                // Then
                Assert.IsType <BString>(result);
                Assert.NotNull(((BString)result).Value);
                Assert.Empty(((BString)result).Value);
            }