pktparser_test.go 950 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package githttp
  2. import (
  3. "encoding/hex"
  4. "errors"
  5. "reflect"
  6. "testing"
  7. )
  8. func TestParsePktLen(t *testing.T) {
  9. tests := []struct {
  10. in string
  11. wantLen int
  12. wantErr error
  13. }{
  14. // Valid pkt-len.
  15. {"00a5", 165, nil},
  16. {"01a5", 421, nil},
  17. {"0032", 50, nil},
  18. {"000b", 11, nil},
  19. {"000B", 11, nil},
  20. // Valud flush-pkt.
  21. {"0000", 0, nil},
  22. {"0001", 0, errors.New("invalid pkt-len: 1")},
  23. {"0003", 0, errors.New("invalid pkt-len: 3")},
  24. {"abyz", 0, hex.InvalidByteError('y')},
  25. {"-<%^", 0, hex.InvalidByteError('-')},
  26. // Maximum length.
  27. {"fff4", 65524, nil},
  28. {"fff5", 0, errors.New("invalid pkt-len: 65525")},
  29. {"ffff", 0, errors.New("invalid pkt-len: 65535")},
  30. }
  31. for _, tt := range tests {
  32. gotLen, gotErr := parsePktLen([]byte(tt.in))
  33. if gotLen != tt.wantLen || !reflect.DeepEqual(gotErr, tt.wantErr) {
  34. t.Errorf("test %q:\n got: %#v, %#v\nwant: %#v, %#v\n", tt.in, gotLen, gotErr, tt.wantLen, tt.wantErr)
  35. }
  36. }
  37. }