...

Source file src/github.com/donovanhide/eventsource/decoder_test.go

Documentation: github.com/donovanhide/eventsource

     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  			// the newlines should not be parsed as empty event
    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