github.com/aavshr/aws-sdk-go@v1.41.3/private/protocol/eventstream/encode_test.go (about)

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