func ExamplePublisher() { pub := pubsub.Publisher{} ch, _ := pub.SubChannel(nil) pub.Publish("msg 1") pub.Publish("msg 2") fmt.Println(<-ch) fmt.Println(<-ch) // Output: // msg 1 // msg 2 }
func ExamplePublisher_SubChannel() { pub := new(pubsub.Publisher) ch, _ := pub.SubChannel("close") pub.Publish("msg 1") pub.Publish("msg 2") pub.Publish("close") for msg := range ch { fmt.Println(msg) } // Output: // msg 1 // msg 2 // close }
func TestSubChannel(t *testing.T) { pub := pubsub.Publisher{} ch, last := pub.SubChannel(nil) if last != nil { t.Fatal("last message shuold be nil") } pub.Publish("msg 1") pub.Publish("msg 2") pub.Publish(nil) if "msg 1" != <-ch { t.Fatal("incorrect message received") } if "msg 2" != <-ch { t.Fatal("incorrect message received") } if nil != <-ch { t.Fatal("incorrect message received") } if _, ok := <-ch; ok { t.Fatal("channel should be closed") } }