event_test.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package event_test
  2. import (
  3. "testing"
  4. "dev.hexasoftware.com/hxs/event"
  5. )
  6. func TestEvent(t *testing.T) {
  7. es := event.NewSystem()
  8. bus := es.NewBus()
  9. a := 0
  10. bus.On("test", func(evt event.Event) {
  11. t.Log("Event successfull")
  12. a++
  13. })
  14. bus.Emit(event.New("test", nil))
  15. if a != 1 {
  16. t.Fatal("Event Failed")
  17. }
  18. }
  19. // Testing a named emitter that prefixes events
  20. func TestNamedEmitter(t *testing.T) {
  21. es := event.NewSystem()
  22. bus := es.NewBus()
  23. em := event.NewNamedEmitter("user", bus)
  24. a := 0
  25. bus.On("test", func(evt event.Event) {
  26. a++
  27. })
  28. bus.On("user:test", func(evt event.Event) {
  29. t.Log("Event fired successfully")
  30. a++
  31. })
  32. em.Emit(event.New("test", nil))
  33. if a != 1 {
  34. t.Fail()
  35. }
  36. }
  37. func TestMultiBus(t *testing.T) {
  38. es := event.NewSystem()
  39. bus1 := es.NewBus()
  40. bus2 := es.NewBus()
  41. cevt := 0
  42. bus1.On("test", func(evt event.Event) {
  43. t.Log("Bus1 evt")
  44. cevt++
  45. })
  46. bus2.On("test", func(evt event.Event) {
  47. t.Log("Bus2 evt")
  48. cevt++
  49. })
  50. bus1.Emit(event.New("test", nil))
  51. if cevt != 2 {
  52. t.Fatal("mismatch number of events consumed")
  53. }
  54. es.RemoveBus(bus2)
  55. bus1.Emit(event.New("test", nil))
  56. if cevt != 3 {
  57. t.Fatal("mismatch number of events consumed, should be 3")
  58. }
  59. }
  60. type MyStruct struct {
  61. event.Emitter
  62. }
  63. func TestCustomStruct(t *testing.T) {
  64. es := event.NewSystem()
  65. bus := es.NewBus()
  66. a := 0
  67. bus.On("MyStruct:test", func(evt event.Event) {
  68. t.Log("Event fired successfully")
  69. a++
  70. })
  71. s := MyStruct{event.NewNamedEmitter("MyStruct", bus)}
  72. s.Emit(event.New("test", nil))
  73. }
  74. func TestParamData(t *testing.T) {
  75. es := event.NewSystem()
  76. bus := es.NewBus()
  77. bus.On("test", func(evt event.Event) {
  78. str := evt.Data().(string)
  79. if str != "123" {
  80. t.FailNow()
  81. }
  82. })
  83. bus.Emit(event.New("test", "123"))
  84. }