Test Bus
This commit is contained in:
98
bus_test.go
Normal file
98
bus_test.go
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestBus(t *testing.T) {
|
||||||
|
bus := NewBus()
|
||||||
|
|
||||||
|
// Announce with no subscribers
|
||||||
|
bus.Announce(&busTest1{
|
||||||
|
Id: "id-nosub",
|
||||||
|
})
|
||||||
|
|
||||||
|
// Complex subscription layout
|
||||||
|
ch1a := bus.Subscribe(&busTest1{
|
||||||
|
Id: "id-overlap",
|
||||||
|
})
|
||||||
|
|
||||||
|
ch2a := bus.Subscribe(&busTest2{
|
||||||
|
Id: "id-overlap",
|
||||||
|
})
|
||||||
|
|
||||||
|
ch2b := bus.Subscribe(&busTest2{
|
||||||
|
Id: "id-dupe",
|
||||||
|
})
|
||||||
|
|
||||||
|
ch2c := bus.Subscribe(&busTest2{
|
||||||
|
Id: "id-dupe",
|
||||||
|
})
|
||||||
|
|
||||||
|
// Overlapping IDs but not types
|
||||||
|
bus.Announce(&busTest1{
|
||||||
|
Id: "id-overlap",
|
||||||
|
})
|
||||||
|
|
||||||
|
msg := <-ch1a
|
||||||
|
if msg.(*busTest1).Id != "id-overlap" {
|
||||||
|
t.Errorf("%+v", msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case msg := <-ch2a:
|
||||||
|
t.Errorf("%+v", msg)
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
|
bus.Announce(&busTest2{
|
||||||
|
Id: "id-overlap",
|
||||||
|
})
|
||||||
|
|
||||||
|
select {
|
||||||
|
case msg := <-ch1a:
|
||||||
|
t.Errorf("%+v", msg)
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
|
msg = <-ch2a
|
||||||
|
if msg.(*busTest2).Id != "id-overlap" {
|
||||||
|
t.Errorf("%+v", msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
bus.Announce(&busTest2{
|
||||||
|
Id: "id-dupe",
|
||||||
|
})
|
||||||
|
|
||||||
|
msg = <-ch2b
|
||||||
|
if msg.(*busTest2).Id != "id-dupe" {
|
||||||
|
t.Errorf("%+v", msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg = <-ch2c
|
||||||
|
if msg.(*busTest2).Id != "id-dupe" {
|
||||||
|
t.Errorf("%+v", msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type busTest1 struct {
|
||||||
|
Id string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *busTest1) GetType() string {
|
||||||
|
return "busTest1"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *busTest1) GetId() string {
|
||||||
|
return bt.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
type busTest2 struct {
|
||||||
|
Id string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *busTest2) GetType() string {
|
||||||
|
return "busTest2"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bt *busTest2) GetId() string {
|
||||||
|
return bt.Id
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user