diff --git a/hub_test.go b/hub_test.go new file mode 100644 index 0000000..b685dbb --- /dev/null +++ b/hub_test.go @@ -0,0 +1,71 @@ +package circolog + +import ( + "testing" + + "gopkg.in/mcuadros/go-syslog.v2/format" +) + +func msg(s string) format.LogParts { + return format.LogParts{"text": s} +} + +func hubCount(h Hub) int { + cl := Client{Nofollow: true} + cl.Messages = make(chan format.LogParts) + h.Register <- cl + cnt := 0 + for range cl.Messages { + cnt++ + } + return cnt +} + +func hubToArray(h Hub) []string { + r := make([]string, 0) + cl := Client{Nofollow: true} + cl.Messages = make(chan format.LogParts) + h.Register <- cl + for m := range cl.Messages { + r = append(r, m["text"].(string)) + } + return r +} + +func TestSingle(t *testing.T) { + h := NewHub(5) + go h.Run() + h.LogMessages <- msg("hi") + + if hubCount(h) != 1 { + t.Error("wrong message number") + } +} + +func TestMany(t *testing.T) { + h := NewHub(5) + go h.Run() + for i := 0; i < 10; i++ { + h.LogMessages <- msg("hi") + } + + if hubCount(h) != 5 { + t.Error("wrong message number") + } +} + +func TestOrder(t *testing.T) { + h := NewHub(5) + go h.Run() + h.LogMessages <- msg("one") + h.LogMessages <- msg("two") + + r := hubToArray(h) + + if r[0] != "one" { + t.Error("wrong first message", r[0]) + } + if r[1] != "two" { + t.Error("wrong last message", r[1]) + } +}