blob: 737fd8b722629810850f77ee4008af45c5591f83 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package sse
import (
"bytes"
"testing"
)
type marshalTestCase struct {
event Event
want string
}
var positive = 1
var negative = -1
var marshalCases = []marshalTestCase{
{Event{Event: "foo", Data: []byte(`["foo"]`)}, "event: foo\ndata: [\"foo\"]\n\n"},
{Event{Event: "bar", Data: []byte(`{"foo":"bar"}`)}, "event: bar\ndata: {\"foo\":\"bar\"}\n\n"},
{Event{Data: []byte(`["foo"]`)}, "data: [\"foo\"]\n\n"},
{Event{ID: "foo", Data: []byte(`[]`)}, "id: foo\ndata: []\n\n"},
{Event{Data: []byte(`[]`), Retry: &positive}, "retry: 1\ndata: []\n\n"},
{Event{Data: []byte(`[]`), Retry: &negative}, "data: []\n\n"},
{Event{ID: "1", Event: "2", Data: []byte(`[3]`), Retry: &positive}, "event: 2\nid: 1\nretry: 1\ndata: [3]\n\n"},
}
func TestEventMarshal(t *testing.T) {
for _, tc := range marshalCases {
g := tc.event.Marshal()
if string(g) != tc.want {
t.Errorf("got %q, want %q", g, tc.want)
}
}
}
func TestEventString(t *testing.T) {
e := &Event{Event: "test", Data: []byte(`{"test": "value"}`)}
w := "event: test\ndata: " + `{"test": "value"}` + "\n\n"
g := e.String()
if g != w {
t.Errorf("got %q, want %q", g, w)
}
}
func TestEventWriteTo(t *testing.T) {
b := &bytes.Buffer{}
e := &Event{Event: "test", Data: []byte(`{"test": "value"}`)}
e.WriteTo(b)
if !bytes.Equal(b.Bytes(), e.Marshal()) {
t.Fatalf("expected %q, got %q", e.Marshal(), b.Bytes())
}
}