public void ReadHeader_KnownHeaderName_SameKnownHeaderNameObjectReturned()
        {
            char[] array = "Server: Apache".ToCharArray();
            var reader = new WinHttpResponseHeaderReader(array, 0, array.Length);

            string name;
            string value;
            Assert.True(reader.ReadHeader(out name, out value));
            Assert.Same(HttpKnownHeaderNames.Server, name);
        }
        public void ReadHeader_KnownHeaderName_SameKnownHeaderNameObjectReturned()
        {
            char[] array  = "Server: Apache".ToCharArray();
            var    reader = new WinHttpResponseHeaderReader(array, 0, array.Length);

            string name;
            string value;

            Assert.True(reader.ReadHeader(out name, out value));
            Assert.Same(HttpKnownHeaderNames.Server, name);
        }
        public void ReadHeader_WithStatusLine_CanSkipStatusLineAndReadHeader()
        {
            char[] array = "HTTP/1.0 200 OK\r\nServer: Apache".ToCharArray();
            var reader = new WinHttpResponseHeaderReader(array, 0, array.Length);

            Assert.True(reader.ReadLine());

            string name;
            string value;
            Assert.True(reader.ReadHeader(out name, out value));
            Assert.Equal("Server", name);
            Assert.Equal("Apache", value);
        }
        public void ReadHeader_WithStatusLine_CanSkipStatusLineAndReadHeader()
        {
            char[] array  = "HTTP/1.0 200 OK\r\nServer: Apache".ToCharArray();
            var    reader = new WinHttpResponseHeaderReader(array, 0, array.Length);

            Assert.True(reader.ReadLine());

            string name;
            string value;

            Assert.True(reader.ReadHeader(out name, out value));
            Assert.Equal("Server", name);
            Assert.Equal("Apache", value);
        }
        public void ReadHeader_KnownHeaderValue_SameHeaderValueObjectReturned(string header)
        {
            char[] array = (header + "\r\n" + header).ToCharArray();
            var reader = new WinHttpResponseHeaderReader(array, 0, array.Length);

            string name1;
            string value1;
            Assert.True(reader.ReadHeader(out name1, out value1));

            string name2;
            string value2;
            Assert.True(reader.ReadHeader(out name2, out value2));

            Assert.Same(value1, value2);
        }
        public void ReadHeader_KnownHeaderValue_SameHeaderValueObjectReturned(string header)
        {
            char[] array  = (header + "\r\n" + header).ToCharArray();
            var    reader = new WinHttpResponseHeaderReader(array, 0, array.Length);

            string name1;
            string value1;

            Assert.True(reader.ReadHeader(out name1, out value1));

            string name2;
            string value2;

            Assert.True(reader.ReadHeader(out name2, out value2));

            Assert.Same(value1, value2);
        }
        public void ReadHeader_VariousInputs_MatchesExpectedBehavior(string raw, KeyValuePair <string, string>[] expectedHeaders)
        {
            char[] array  = raw.ToCharArray();
            var    reader = new WinHttpResponseHeaderReader(array, 0, array.Length);

            string name;
            string value;

            for (int i = 0; i < expectedHeaders.Length; i++)
            {
                string expectedName  = expectedHeaders[i].Key;
                string expectedValue = expectedHeaders[i].Value;

                Assert.True(reader.ReadHeader(out name, out value));
                Assert.Equal(expectedName, name);
                Assert.Equal(expectedValue, value);
            }

            Assert.False(reader.ReadHeader(out name, out value));
            Assert.Null(name);
            Assert.Null(value);
        }
        public void ReadHeader_VariousInputs_MatchesExpectedBehavior(string raw, KeyValuePair<string, string>[] expectedHeaders)
        {
            char[] array = raw.ToCharArray();
            var reader = new WinHttpResponseHeaderReader(array, 0, array.Length);

            string name;
            string value;

            for (int i = 0; i < expectedHeaders.Length; i++)
            {
                string expectedName = expectedHeaders[i].Key;
                string expectedValue = expectedHeaders[i].Value;

                Assert.True(reader.ReadHeader(out name, out value));
                Assert.Equal(expectedName, name);
                Assert.Equal(expectedValue, value);
            }

            Assert.False(reader.ReadHeader(out name, out value));
            Assert.Null(name);
            Assert.Null(value);
        }