50 lines
955 B
Go
50 lines
955 B
Go
package engine
|
|
|
|
import (
|
|
"testing"
|
|
|
|
. "github.com/franela/goblin"
|
|
)
|
|
|
|
func TestBus(t *testing.T) {
|
|
g := Goblin(t)
|
|
g.Describe("Event bus", func() {
|
|
|
|
g.It("Should unsubscribe", func() {
|
|
c1 := make(chan *Event)
|
|
c2 := make(chan *Event)
|
|
b := newEventbus()
|
|
b.subscribe(c1)
|
|
b.subscribe(c2)
|
|
g.Assert(len(b.subs)).Equal(2)
|
|
})
|
|
|
|
g.It("Should subscribe", func() {
|
|
c1 := make(chan *Event)
|
|
c2 := make(chan *Event)
|
|
b := newEventbus()
|
|
b.subscribe(c1)
|
|
b.subscribe(c2)
|
|
g.Assert(len(b.subs)).Equal(2)
|
|
b.unsubscribe(c1)
|
|
b.unsubscribe(c2)
|
|
g.Assert(len(b.subs)).Equal(0)
|
|
})
|
|
|
|
g.It("Should send", func() {
|
|
em := map[string]bool{"foo": true, "bar": true}
|
|
e1 := &Event{Name: "foo"}
|
|
e2 := &Event{Name: "bar"}
|
|
c := make(chan *Event)
|
|
b := newEventbus()
|
|
b.subscribe(c)
|
|
b.send(e1)
|
|
b.send(e2)
|
|
r1 := <-c
|
|
r2 := <-c
|
|
g.Assert(em[r1.Name]).Equal(true)
|
|
g.Assert(em[r2.Name]).Equal(true)
|
|
})
|
|
})
|
|
|
|
}
|