pubsub_test.go 975 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package pubsub_test
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/v2ray/v2ray-core/app"
  6. . "github.com/v2ray/v2ray-core/app/pubsub"
  7. apptesting "github.com/v2ray/v2ray-core/app/testing"
  8. v2testing "github.com/v2ray/v2ray-core/testing"
  9. "github.com/v2ray/v2ray-core/testing/assert"
  10. )
  11. func TestPubsub(t *testing.T) {
  12. v2testing.Current(t)
  13. messages := make(map[string]app.PubsubMessage)
  14. pubsub := New()
  15. pubsub.Subscribe(&apptesting.Context{}, "t1", func(message app.PubsubMessage) {
  16. messages["t1"] = message
  17. })
  18. pubsub.Subscribe(&apptesting.Context{}, "t2", func(message app.PubsubMessage) {
  19. messages["t2"] = message
  20. })
  21. message := app.PubsubMessage([]byte("This is a pubsub message."))
  22. pubsub.Publish(&apptesting.Context{}, "t2", message)
  23. <-time.Tick(time.Second)
  24. _, found := messages["t1"]
  25. assert.Bool(found).IsFalse()
  26. actualMessage, found := messages["t2"]
  27. assert.Bool(found).IsTrue()
  28. assert.StringLiteral(string(actualMessage)).Equals(string(message))
  29. }