예제 #1
0
        public void BelowMinimumLength2_ThrowsInvalidBencodeExceptionAsync(string bencode, IBencodeParser bparser)
        {
            var         parser = new BListParser(bparser);
            Func <Task> action = async() => await parser.ParseStringAsync(bencode);

            action.Should().Throw <InvalidBencodeException <BList> >().WithMessage("*reached end of stream*");
        }
예제 #2
0
        public void InvalidFirstChar_ThrowsInvalidBencodeExceptionAsync(string bencode, IBencodeParser bparser)
        {
            var         parser = new BListParser(bparser);
            Func <Task> action = async() => await parser.ParseStringAsync(bencode);

            action.Should().Throw <InvalidBencodeException <BList> >().WithMessage("*Unexpected character*");
        }
예제 #3
0
        public void BelowMinimumLength2_ThrowsInvalidBencodeException(string bencode, IBencodeParser bparser)
        {
            var    parser = new BListParser(bparser);
            Action action = () => parser.ParseString(bencode);

            action.Should().Throw <InvalidBencodeException <BList> >().WithMessage("*Invalid length*");
        }
예제 #4
0
        public void InvalidFirstChar_ThrowsInvalidBencodeException(string bencode, IBencodeParser bparser)
        {
            var    parser = new BListParser(bparser);
            Action action = () => parser.ParseString(bencode);

            action.Should().Throw <InvalidBencodeException <BList> >().WithMessage("*Unexpected character*");
        }
예제 #5
0
        public void InvalidFirstChar_ThrowsInvalidBencodeException(string bencode, IBencodeParser bparser)
        {
            var    parser = new BListParser(bparser);
            Action action = () => parser.ParseString(bencode);

            action.ShouldThrow <InvalidBencodeException <BList> >();
        }
예제 #6
0
        public async Task CanParseEmptyListAsync(string bencode, IBencodeParser bparser)
        {
            var parser = new BListParser(bparser);
            var blist  = await parser.ParseStringAsync(bencode);

            blist.Count.Should().Be(0);
            await bparser.DidNotReceive().ParseAsync(Arg.Any <PipeBencodeReader>());
        }
예제 #7
0
        public void CanParseEmptyList(string bencode, IBencodeParser bparser)
        {
            var parser = new BListParser(bparser);
            var blist  = parser.ParseString(bencode);

            blist.Count.Should().Be(0);
            bparser.DidNotReceive().Parse(Arg.Any <BencodeReader>());
        }
예제 #8
0
        public void BelowMinimumLength2_WhenStreamLengthNotSupported_ThrowsInvalidBencodeException(string bencode, IBencodeParser bparser)
        {
            var stream = new LengthNotSupportedStream(bencode);

            var    parser = new BListParser(bparser);
            Action action = () => parser.Parse(stream);

            action.Should().Throw <InvalidBencodeException <BList> >().WithMessage("*Unexpected character*");
        }
예제 #9
0
        public void MissingEndChar_ThrowsInvalidBencodeExceptionAsync(string bencode, IBencodeParser bparser, IBObject something)
        {
            // Arrange
            bparser.ParseAsync(Arg.Any <PipeBencodeReader>())
            .Returns(something)
            .AndSkipsAheadAsync(bencode.Length - 1);

            // Act
            var         parser = new BListParser(bparser);
            Func <Task> action = async() => await parser.ParseStringAsync(bencode);

            // Assert
            action.Should().Throw <InvalidBencodeException <BList> >().WithMessage("*Missing end character of object*");
        }
예제 #10
0
        public void MissingEndChar_ThrowsInvalidBencodeException(string bencode, IBencodeParser bparser)
        {
            // Arrange
            var bstring = new BString("test");

            SetupBencodeParser(bparser, bencode, bstring, hasEndChar: false);

            // Act
            var    parser = new BListParser(bparser);
            Action action = () => parser.ParseString(bencode);

            // Assert
            action.ShouldThrow <InvalidBencodeException <BList> >();
        }
예제 #11
0
        public void CanParseSimple(string bencode, IBencodeParser bparser)
        {
            // Arrange
            var bstring = new BString("test");

            SetupBencodeParser(bparser, bencode, bstring, hasEndChar: true);

            // Act
            var parser = new BListParser(bparser);
            var blist  = parser.ParseString(bencode);

            // Assert
            blist.Count.Should().Be(1);
            blist[0].Should().BeOfType <BString>();
            blist[0].Should().BeSameAs(bstring);
            bparser.Received(1).Parse(Arg.Any <BencodeStream>());
        }
예제 #12
0
        public async Task CanParseSimpleAsync(string bencode, IBencodeParser bparser)
        {
            // Arrange
            var bstring = new BString("test");

            bparser.ParseAsync(Arg.Any <PipeBencodeReader>())
            .Returns(bstring)
            .AndSkipsAheadAsync(bencode.Length - 2);

            // Act
            var parser = new BListParser(bparser);
            var blist  = await parser.ParseStringAsync(bencode);

            // Assert
            blist.Count.Should().Be(1);
            blist[0].Should().BeOfType <BString>();
            blist[0].Should().BeSameAs(bstring);
            await bparser.Received(1).ParseAsync(Arg.Any <PipeBencodeReader>());
        }