encode_test.go 928 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package eventstream
  2. import (
  3. "bytes"
  4. "encoding/hex"
  5. "reflect"
  6. "testing"
  7. )
  8. func TestEncoder_Encode(t *testing.T) {
  9. cases, err := readPositiveTests("testdata")
  10. if err != nil {
  11. t.Fatalf("failed to load positive tests, %v", err)
  12. }
  13. for _, c := range cases {
  14. var w bytes.Buffer
  15. encoder := NewEncoder(&w)
  16. err = encoder.Encode(c.Decoded.Message())
  17. if err != nil {
  18. t.Fatalf("%s, failed to encode message, %v", c.Name, err)
  19. }
  20. if e, a := c.Encoded, w.Bytes(); !reflect.DeepEqual(e, a) {
  21. t.Errorf("%s, expect:\n%v\nactual:\n%v\n", c.Name,
  22. hex.Dump(e), hex.Dump(a))
  23. }
  24. }
  25. }
  26. func BenchmarkEncode(b *testing.B) {
  27. var w bytes.Buffer
  28. encoder := NewEncoder(&w)
  29. msg := Message{
  30. Headers: Headers{
  31. {Name: "event-id", Value: Int16Value(123)},
  32. },
  33. Payload: []byte(`{"abc":123}`),
  34. }
  35. b.ResetTimer()
  36. for i := 0; i < b.N; i++ {
  37. err := encoder.Encode(msg)
  38. if err != nil {
  39. b.Fatal(err)
  40. }
  41. }
  42. }