package event_test import ( "testing" "dev.hexasoftware.com/hxs/event" ) func TestEvent(t *testing.T) { es := event.NewSystem() bus := es.NewBus() a := 0 bus.On("test", func(evt event.Event) { t.Log("Event successfull") a++ }) bus.Emit(event.New("test", nil)) if a != 1 { t.Fatal("Event Failed") } } // Testing a named emitter that prefixes events func TestNamedEmitter(t *testing.T) { es := event.NewSystem() bus := es.NewBus() em := event.NewNamedEmitter("user", bus) a := 0 bus.On("test", func(evt event.Event) { a++ }) bus.On("user:test", func(evt event.Event) { t.Log("Event fired successfully") a++ }) em.Emit(event.New("test", nil)) if a != 1 { t.Fail() } } func TestMultiBus(t *testing.T) { es := event.NewSystem() bus1 := es.NewBus() bus2 := es.NewBus() cevt := 0 bus1.On("test", func(evt event.Event) { t.Log("Bus1 evt") cevt++ }) bus2.On("test", func(evt event.Event) { t.Log("Bus2 evt") cevt++ }) bus1.Emit(event.New("test", nil)) if cevt != 2 { t.Fatal("mismatch number of events consumed") } es.RemoveBus(bus2) bus1.Emit(event.New("test", nil)) if cevt != 3 { t.Fatal("mismatch number of events consumed, should be 3") } } type MyStruct struct { event.Emitter } func TestCustomStruct(t *testing.T) { es := event.NewSystem() bus := es.NewBus() a := 0 bus.On("MyStruct:test", func(evt event.Event) { t.Log("Event fired successfully") a++ }) s := MyStruct{event.NewNamedEmitter("MyStruct", bus)} s.Emit(event.New("test", nil)) } func TestParamData(t *testing.T) { es := event.NewSystem() bus := es.NewBus() bus.On("test", func(evt event.Event) { str := evt.Data().(string) if str != "123" { t.FailNow() } }) bus.Emit(event.New("test", "123")) }