| // Copyright 2011 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package http |
| |
| import ( |
| "bytes" |
| "testing" |
| ) |
| |
| var headerWriteTests = []struct { |
| h Header |
| exclude map[string]bool |
| expected string |
| }{ |
| {Header{}, nil, ""}, |
| { |
| Header{ |
| "Content-Type": {"text/html; charset=UTF-8"}, |
| "Content-Length": {"0"}, |
| }, |
| nil, |
| "Content-Length: 0\r\nContent-Type: text/html; charset=UTF-8\r\n", |
| }, |
| { |
| Header{ |
| "Content-Length": {"0", "1", "2"}, |
| }, |
| nil, |
| "Content-Length: 0\r\nContent-Length: 1\r\nContent-Length: 2\r\n", |
| }, |
| { |
| Header{ |
| "Expires": {"-1"}, |
| "Content-Length": {"0"}, |
| "Content-Encoding": {"gzip"}, |
| }, |
| map[string]bool{"Content-Length": true}, |
| "Content-Encoding: gzip\r\nExpires: -1\r\n", |
| }, |
| { |
| Header{ |
| "Expires": {"-1"}, |
| "Content-Length": {"0", "1", "2"}, |
| "Content-Encoding": {"gzip"}, |
| }, |
| map[string]bool{"Content-Length": true}, |
| "Content-Encoding: gzip\r\nExpires: -1\r\n", |
| }, |
| { |
| Header{ |
| "Expires": {"-1"}, |
| "Content-Length": {"0"}, |
| "Content-Encoding": {"gzip"}, |
| }, |
| map[string]bool{"Content-Length": true, "Expires": true, "Content-Encoding": true}, |
| "", |
| }, |
| { |
| Header{ |
| "Nil": nil, |
| "Empty": {}, |
| "Blank": {""}, |
| "Double-Blank": {"", ""}, |
| }, |
| nil, |
| "Blank: \r\nDouble-Blank: \r\nDouble-Blank: \r\n", |
| }, |
| } |
| |
| func TestHeaderWrite(t *testing.T) { |
| var buf bytes.Buffer |
| for i, test := range headerWriteTests { |
| test.h.WriteSubset(&buf, test.exclude) |
| if buf.String() != test.expected { |
| t.Errorf("#%d:\n got: %q\nwant: %q", i, buf.String(), test.expected) |
| } |
| buf.Reset() |
| } |
| } |