github.com/secoba/wails/v2@v2.6.4/internal/frontend/runtime/events_test.go (about) 1 package runtime_test 2 3 import ( 4 "fmt" 5 "github.com/secoba/wails/v2/internal/frontend/runtime" 6 "sync" 7 "testing" 8 ) 9 import "github.com/matryer/is" 10 11 type mockLogger struct { 12 Log string 13 } 14 15 func (t *mockLogger) Trace(format string, args ...interface{}) { 16 t.Log = fmt.Sprintf(format, args...) 17 } 18 19 func Test_EventsOn(t *testing.T) { 20 i := is.New(t) 21 l := &mockLogger{} 22 manager := runtime.NewEvents(l) 23 24 // Test On 25 eventName := "test" 26 counter := 0 27 var wg sync.WaitGroup 28 wg.Add(1) 29 manager.On(eventName, func(args ...interface{}) { 30 // This is called in a goroutine 31 counter++ 32 wg.Done() 33 }) 34 manager.Emit(eventName, "test payload") 35 wg.Wait() 36 i.Equal(1, counter) 37 38 }