public void Should_parse_request_with_three_headers_and_various_line_endings()
        {
            // Given
            var stream = ("GET /gsscoder/httphelpers HTTP/1.1\r\n" +
                          "Host: github.com\r\n" +
                          "Accept: */*\r\n" +
                          "Content-Type: text/html; q=0.9, text/plain\r\n\r\n" +
                          "\r\n\r\n\r\n\r\n").AsStream();
            var target = new FakeHttpParserTarget();

            // When
            var result = ParseMethod(stream, (method, uri, version) =>
                {
                    target.RequestLine.Method = method;
                    target.RequestLine.Uri = uri;
                    target.RequestLine.Version = version;
                },
            (header, value) =>
                target.Headers.Add(header, value));

            // Than
            result.Should().BeTrue();
            target.RequestLine.Method.Should().Be("GET");
            target.RequestLine.Uri.Should().Be("/gsscoder/httphelpers");
            target.RequestLine.Version.Should().Be("HTTP/1.1");
            target.Headers.Should().HaveCount(c => c == 3);
        }
        public void Should_parse_response_with_one_header_and_body()
        {
            // Given
            var stream = ("HTTP/1.1 200 OK\r\n" +
                          "Date: Sun, 08 Oct 2000 18:46:12 GMT\r\n\r\n" +
                          "<html><body><p>Heartbeat!</p></body></html>\r\n").AsStream();
            var target = new FakeHttpParserTarget();

            // When
            var result = ParseMethod(stream, (version, code, reason) =>
                {
                    target.ResponseLine.Version = version;
                    target.ResponseLine.Code = code;
                    target.ResponseLine.Reason = reason;
                },
            (header, value) =>
                target.Headers.Add(header, value));

            // Than
            result.Should().BeTrue();
            target.ResponseLine.Version.Should().Be("HTTP/1.1");
            target.ResponseLine.Code.Should().Be("200");
            target.ResponseLine.Reason.Should().Be("OK");
            target.Headers.Should().HaveCount(c => c == 1);
            target.Headers["Date"].Should().Be("Sun, 08 Oct 2000 18:46:12 GMT");
        }