コード例 #1
0
        public void Test_ContentLength_Header_Should_Work_for_UpperCases()
        {
            //Given
            const string data   = "12\r\nContent-Length: 10\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();

            //Then
            Assert.Equal(10, reader.ContentLength);
        }
コード例 #2
0
        public void Test_ContentLength_Header_Should_Return_Zero()
        {
            //Given
            const string data   = "12\r\ncontent-length: 0\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();

            //Then
            Assert.Equal(0, reader.ContentLength);
        }
コード例 #3
0
        public void Test_Chunked_Header_Should_Return_TRUE_CapitalLetters()
        {
            //Given
            const string data   = "12\r\n Transfer - Encoding: chunked\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();

            //Then
            Assert.True(reader.Chunked);
        }
コード例 #4
0
        public void Should_Correctly_ReadHeaders_EdgeCase_With_MULTIPLE_Reads()
        {
            //Given
            const string data   = "12\r\n123\r\n1234\r\n\r\nandrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Two);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Equal("12\r\n123\r\n1234\r\n\r\n", Encoding.UTF8.GetString(headers));
        }
コード例 #5
0
        public void Test_ContentLength_Header_Should_Return_Negative_InvalidValue()
        {
            //Given
            const string data   = "12\r\nContent-Length: -10\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();

            //Then
            Assert.Equal(-1, reader.ContentLength);
        }
コード例 #6
0
        public void Test_ReadProcess_ReadSize_Overtakes_StreamData_OneHeader_WasFound()
        {
            //Given
            const string data   = "12\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Four);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Null(headers);
        }
コード例 #7
0
        public void Test_ReadHeaders_Should_Return_Null_When_Separator_Is_Not_Found()
        {
            //Given
            const string data   = "1234andrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Two);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Null(headers);
        }
コード例 #8
0
        public void Test_ReadHeaders_EndLine_Is_AtTheEnd()
        {
            //Given
            const string data   = "12345678\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, data.Length);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Equal("12345678\r\n\r\n", Encoding.UTF8.GetString(headers));
        }
コード例 #9
0
        public void Test_ReadHeaders_NULL_After_Reading_MoreBytes_than_StreamData()
        {
            //Given
            const string data   = "1234andrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Null(headers);
        }
コード例 #10
0
        public void Test_ReadHeaders_ReadValue_Smaller_Than_StreamData_MultipleHeaders()
        {
            //Given
            const string data   = "12\r\n1234\r\n12345\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Three);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Null(headers);
        }
コード例 #11
0
        public void Test_ReadHeaders_For_Simple_Case()
        {
            //Given
            const string data   = "12345\r\n\r\n678";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, data.Length);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Equal("12345\r\n\r\n", Encoding.UTF8.GetString(headers));
        }
コード例 #12
0
        public void Test_ReadHeaders_Headers_are_Stored_Completely_after_Multiple_Reads()
        {
            //Given
            const string data   = "12\r\n34\r\n5678\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, data.Length);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Equal(data, Encoding.UTF8.GetString(headers));
        }
コード例 #13
0
        public void Test_Chunked_Header_Should_Return_False_SimpleCase()
        {
            //Given
            const string data   = "12\r\n Transfer\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();

            //Then
            Assert.False(reader.Chunked);
        }
コード例 #14
0
        public void Should_Do_Multiple_reads_Firstread_PART_Does_NOT_Contain_Separator()
        {
            //Given
            const string data   = "12345678abc\r\n\r\nandrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            byte[] headers = reader.ReadHeaders();

            //Then
            Assert.Equal("12345678abc\r\n\r\n", Encoding.UTF8.GetString(headers));
        }
コード例 #15
0
        public void Test_Chunked_Header_Only_First_HeaderPart_is_contained()
        {
            //Given
            const string data   = "12\r\n Transfer - Encoding: \r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();

            //Then
            Assert.False(reader.Chunked);
        }
コード例 #16
0
        public void Test_GetRemainder_is_Smaller_Than_Total_StreamData_MultipleHeaders()
        {
            //Given
            const string data   = "12\r\n1234\r\n12345\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, 3);

            reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Null(remainder);
        }
コード例 #17
0
        public void Test_GetRemainder_Should_Return_NULL_For_EdgeCase()
        {
            //Given
            const string data   = "1234\r\nandrei\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Two);

            reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Null(remainder);
        }
コード例 #18
0
        public void Test_GetRemainder_Should_Return_NULL_After_Multiple_Reads()
        {
            //Given
            const string data   = "1234nandrei\r\n\r\n";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Null(remainder);
        }
コード例 #19
0
        public void Test_GetRemainder_ReadValue_Smaller_Than_StreamData_MultipleHeaders()
        {
            //Given
            const string data   = "12\r\n1234\r\n12345\r\n\r\nab";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Three);

            reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Equal("ab", Encoding.UTF8.GetString(remainder));
        }
コード例 #20
0
        public void Test_GetRemainder_ReadSize_OverTakes_Total_StreamData()
        {
            //Given
            const string data   = "1234\r\n\r\nandrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, 7);

            reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Equal("andrei", Encoding.UTF8.GetString(remainder));
        }
コード例 #21
0
        public void Test_GetRemainder_ReadSize_Overtakes_StreamData_more_Complex_Case()
        {
            //Given
            const string data   = "12\r\n34\r\n\r\naa";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Equal("aa", Encoding.UTF8.GetString(remainder));
        }
コード例 #22
0
        public void Test_GetRemainder_Should_Return_Null_When_Separator_Is_Not_Found()
        {
            //Given
            const string data   = "1234andrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Null(remainder);
        }
コード例 #23
0
        public void Test_GetRemainder_For_More_Complex_Case()
        {
            //Given
            const string data   = "12\r\n123\r\n1234\r\n\r\nandrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Two);

            reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Equal("a", Encoding.UTF8.GetString(remainder));
        }
コード例 #24
0
        public void Test_GetRemainder_SmallerSize_Read()
        {
            //Given
            const string data   = "1234\r\n\r\nandrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Three);

            byte[] headers   = reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Equal("1234\r\n\r\n", Encoding.UTF8.GetString(headers));
            Assert.Equal("a", Encoding.UTF8.GetString(remainder));
        }
コード例 #25
0
        public void Test_ReadProcess_ReadSize_Overtakes_Total_StreamData_SecondTest()
        {
            //Given
            const string data   = "1234\r\n\r\nandrei";
            var          stream = new StubNetworkStream(data);

            //When
            var reader = new HeadersReader(stream, Eight);

            byte[] headers   = reader.ReadHeaders();
            byte[] remainder = reader.Remainder;

            //Then
            Assert.Equal("1234\r\n\r\n", Encoding.UTF8.GetString(headers));
            Assert.Null(remainder);
        }