package pubsub import ( "testing" "time" ) func TestTopicSubscribe(t *testing.T) { sub := new(subscriber) top := newTopic("foo") top.subscribe(sub) if _, ok := top.subs[sub]; !ok { t.Errorf("Exepect subscription registered with topic on subscribe") } } func TestTopicUnsubscribe(t *testing.T) { sub := new(subscriber) top := newTopic("foo") top.subscribe(sub) if _, ok := top.subs[sub]; !ok { t.Errorf("Exepect subscription registered with topic on subscribe") } top.unsubscribe(sub) if _, ok := top.subs[sub]; ok { t.Errorf("Exepect subscription de-registered with topic on unsubscribe") } } func TestTopicClose(t *testing.T) { sub := new(subscriber) top := newTopic("foo") top.subscribe(sub) go func() { top.close() }() select { case <-top.done: case <-time.After(1 * time.Second): t.Errorf("Expect subscription closed") } }