encode_test.go 838 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Copyright 2014 The Go Authors.
  2. // See https://code.google.com/p/go/source/browse/CONTRIBUTORS
  3. // Licensed under the same terms as Go itself:
  4. // https://code.google.com/p/go/source/browse/LICENSE
  5. package hpack
  6. import (
  7. "bytes"
  8. "reflect"
  9. "testing"
  10. )
  11. func TestEncoder(t *testing.T) {
  12. headers := []HeaderField{
  13. HeaderField{Name: "content-type", Value: "text/html"},
  14. HeaderField{Name: "x-foo", Value: "x-bar"},
  15. }
  16. var buf bytes.Buffer
  17. e := NewEncoder(&buf)
  18. for _, hf := range headers {
  19. if err := e.WriteField(hf); err != nil {
  20. t.Fatal(err)
  21. }
  22. }
  23. var got []HeaderField
  24. _, err := NewDecoder(4<<10, func(f HeaderField) {
  25. got = append(got, f)
  26. }).Write(buf.Bytes())
  27. if err != nil {
  28. t.Error("Decoder Write = %v", err)
  29. }
  30. if !reflect.DeepEqual(got, headers) {
  31. t.Errorf("Decoded %+v; want %+v", got, headers)
  32. }
  33. }