...
1 package eventsource
2
3 import (
4 "io"
5 "reflect"
6 "strings"
7 "testing"
8 )
9
10 func TestDecode(t *testing.T) {
11 tests := []struct {
12 rawInput string
13 wantedEvents []*publication
14 }{
15 {
16 rawInput: "event: eventName\ndata: {\"sample\":\"value\"}\n\n",
17 wantedEvents: []*publication{{event: "eventName", data: "{\"sample\":\"value\"}"}},
18 },
19 {
20
21 rawInput: "\n\n\nevent: event1\n\n\n\n\nevent: event2\n\n",
22 wantedEvents: []*publication{{event: "event1"}, {event: "event2"}},
23 },
24 }
25
26 for _, test := range tests {
27 decoder := NewDecoder(strings.NewReader(test.rawInput))
28 i := 0
29 for {
30 event, err := decoder.Decode()
31 if err == io.EOF {
32 break
33 }
34 if err != nil {
35 t.Fatalf("Unexpected error on decoding event: %s", err)
36 }
37
38 if !reflect.DeepEqual(event, test.wantedEvents[i]) {
39 t.Fatalf("Parsed event %+v does not equal wanted event %+v", event, test.wantedEvents[i])
40 }
41 i++
42 }
43 if i != len(test.wantedEvents) {
44 t.Fatalf("Unexpected number of events: %d does not equal wanted: %d", i, len(test.wantedEvents))
45 }
46 }
47 }
48
View as plain text