👔 up: update some code style, add more test cases

This commit is contained in:
inhere
2025-08-21 21:56:18 +08:00
parent 1cb22cbe51
commit 72a268efc9
6 changed files with 61 additions and 12 deletions

View File

@@ -89,6 +89,32 @@ func TestIssues_20(t *testing.T) {
// dump.P(buf.String())
}
// https://github.com/gookit/event/issues/53
// 我现在 在事件1里面 触发启动事件2 是 启动不了的,貌似他会进入一个死循环进行卡死状态
func TestIssues_53(t *testing.T) {
buf := new(bytes.Buffer)
mgr := event.NewManager("test")
handler1 := event.ListenerFunc(func(e event.Event) error {
_, _ = fmt.Fprintf(buf, "%s-%s|", e.Name(), e.Get("user"))
// trigger event2
err, _ := mgr.Fire("app.event2", event.M{"user": "INHERE"})
return err
})
handler2 := event.ListenerFunc(func(e event.Event) error {
_, _ = fmt.Fprintf(buf, "%s-%s|", e.Name(), e.Get("user"))
return nil
})
mgr.On("app.event1", handler1)
mgr.On("app.event2", handler2)
err, _ := mgr.Fire("app.event1", event.M{"user": "INHERE"})
assert.NoError(t, err)
assert.StrContains(t, "app.event1-INHERE|app.event2-INHERE|", buf.String())
}
// https://github.com/gookit/event/issues/61
// prepare: 此时设置 ConsumerNum = 10, 每个任务耗时1s, 触发100个任务
// expected: 10s左右执行完所有任务

View File

@@ -15,7 +15,7 @@ type testListenerCalc struct {
owner *globalTestVal
}
func (l testListenerCalc) Handle(e Event) error {
func (l testListenerCalc) Handle(_ Event) error {
l.owner.n++
l.owner.sum += l.bind
return nil
@@ -136,12 +136,12 @@ func Test_RemoveListener(t *testing.T) {
var globalStatic = globalTestVal{}
func testFuncCalc1(e Event) error {
func testFuncCalc1(_ Event) error {
globalStatic.n++
globalStatic.sum += 11
return nil
}
func testFuncCalc2(e Event) error {
func testFuncCalc2(_ Event) error {
globalStatic.n++
globalStatic.sum += 22
return nil

View File

@@ -228,8 +228,6 @@ func (em *Manager) RemoveEvents() {
// newBasicEvent create new BasicEvent by clone em.sample
func (em *Manager) newBasicEvent(name string, data M) *BasicEvent {
var cp = *em.sample
cp.ctx = context.Background()
cp.SetName(name)
cp.SetData(data)
return &cp

View File

@@ -332,3 +332,21 @@ func (em *Manager) AwaitFire(e Event) (err error) {
close(ch)
return
}
/*************************************************************
* region Helper methods
*************************************************************/
// CloseWait close channel and wait all async event done.
func (em *Manager) CloseWait() error {
if err := em.Close(); err != nil {
return err
}
return em.Wait()
}
// Wait wait all async event done.
func (em *Manager) Wait() error {
em.wg.Wait()
return em.err
}

19
std.go
View File

@@ -38,6 +38,19 @@ func Subscribe(sbr Subscriber) { std.Subscribe(sbr) }
// AddSubscriber register a listener to the event
func AddSubscriber(sbr Subscriber) { std.AddSubscriber(sbr) }
// HasListeners has listeners for the event name.
func HasListeners(name string) bool { return std.HasListeners(name) }
// Reset the default event manager
func Reset() { std.Clear() }
// CloseWait close chan and wait for all async events done.
func CloseWait() error { return std.CloseWait() }
/*************************************************************
* region Trigger
*************************************************************/
// AsyncFire simple async fire event by 'go' keywords
func AsyncFire(e Event) { std.AsyncFire(e) }
@@ -76,12 +89,6 @@ func MustTrigger(name string, params M) Event { return std.MustFire(name, params
// FireBatch fire multi event at once.
func FireBatch(es ...any) []error { return std.FireBatch(es...) }
// HasListeners has listeners for the event name.
func HasListeners(name string) bool { return std.HasListeners(name) }
// Reset the default event manager
func Reset() { std.Clear() }
/*************************************************************
* region Event
*************************************************************/

View File

@@ -166,7 +166,7 @@ func TestFireEvent(t *testing.T) {
}
return nil
}))
evt2 := event.New("evt2", event.M{"name": "inhere"})
evt2 := event.NewEvent("evt2", event.M{"name": "inhere"})
err = event.FireEventCtx(ctx, evt2)
assert.NoError(t, err)
assert.Equal(t, "ctx-value1", ctxVal)