public void HeaderFolding() { const string crlf = "\r\n"; var ua = new[] { "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0)", " \t \t Gecko/20100101 ", "\t \t Firefox/42.0", }; var request = "GET / HTTP/1.1" + crlf + "User-Agent: " + string.Join(crlf, ua) + crlf + "Host: www.example.com" + crlf + crlf; var ascii = Encoding.ASCII; using var input = new MemoryStream(ascii.GetBytes(request)); using var hs = HttpMessageReader.ReadRequest(input); Assert.That(hs.ProtocolVersion, Is.EqualTo(new Version(1, 1))); Assert.That(hs.Url.OriginalString, Is.EqualTo("/")); Assert.That(hs.Method, Is.EqualTo("GET")); Assert.That(hs.Headers.Count, Is.EqualTo(2)); using var h = hs.Headers.GetEnumerator(); Assert.That(h.MoveNext(), Is.True); Assert.That(h.Current.Key, Is.EqualTo("User-Agent")); Assert.That(h.Current.Value, Is.EqualTo(string.Join(string.Empty, ua))); Assert.That(h.MoveNext(), Is.True); Assert.That(h.Current.Key, Is.EqualTo("Host")); Assert.That(h.Current.Value, Is.EqualTo("www.example.com")); Assert.That(h.MoveNext(), Is.False); }