mirror of
https://github.com/gookit/event
synced 2025-09-26 19:11:14 +08:00
fix: fix tests error, add more tests
This commit is contained in:
49
benchmark_test.go
Normal file
49
benchmark_test.go
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
package event_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/gookit/event"
|
||||||
|
)
|
||||||
|
|
||||||
|
func BenchmarkManager_Fire_no_listener(b *testing.B) {
|
||||||
|
em := event.NewManager("test")
|
||||||
|
em.On("app.up", event.ListenerFunc(func(e event.Event) error {
|
||||||
|
return nil
|
||||||
|
}))
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
b.ReportAllocs()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
_, _ = em.Fire("app.up", nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkManager_Fire_normal(b *testing.B) {
|
||||||
|
em := event.NewManager("test")
|
||||||
|
em.On("app.up", event.ListenerFunc(func(e event.Event) error {
|
||||||
|
return nil
|
||||||
|
}))
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
b.ReportAllocs()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
_, _ = em.Fire("app.up", nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkManager_Fire_wildcard(b *testing.B) {
|
||||||
|
em := event.NewManager("test")
|
||||||
|
em.On("app.*", event.ListenerFunc(func(e event.Event) error {
|
||||||
|
return nil
|
||||||
|
}))
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
b.ReportAllocs()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
_, _ = em.Fire("app.up", nil)
|
||||||
|
}
|
||||||
|
}
|
@@ -3,6 +3,9 @@ package event
|
|||||||
// DefaultEM default event manager
|
// DefaultEM default event manager
|
||||||
var DefaultEM = NewManager("default")
|
var DefaultEM = NewManager("default")
|
||||||
|
|
||||||
|
// NoMatchedListener error
|
||||||
|
// var NoMatchedListener = errors.New("no event listeners matched")
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
* Listener
|
* Listener
|
||||||
*************************************************************/
|
*************************************************************/
|
||||||
@@ -37,7 +40,7 @@ func Trigger(name string, params M) (error, Event) {
|
|||||||
return DefaultEM.Fire(name, params)
|
return DefaultEM.Fire(name, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fire fire listeners by name.
|
// Fire listeners by name.
|
||||||
func Fire(name string, params M) (error, Event) {
|
func Fire(name string, params M) (error, Event) {
|
||||||
return DefaultEM.Fire(name, params)
|
return DefaultEM.Fire(name, params)
|
||||||
}
|
}
|
||||||
|
38
global_test.go
Normal file
38
global_test.go
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package event_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/gookit/event"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestFire_point_at_end(t *testing.T) {
|
||||||
|
// clear all
|
||||||
|
event.Reset()
|
||||||
|
event.Listen("db.*", event.ListenerFunc(func(e event.Event) error {
|
||||||
|
e.Set("key", "val")
|
||||||
|
return nil
|
||||||
|
}))
|
||||||
|
|
||||||
|
err, e := event.Fire("db.add", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, "val", e.Get("key"))
|
||||||
|
|
||||||
|
err, e = event.Fire("db", nil)
|
||||||
|
assert.Nil(t, e)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err, e = event.Fire("db.", nil)
|
||||||
|
assert.Nil(t, e)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFire_notExist(t *testing.T) {
|
||||||
|
// clear all
|
||||||
|
event.Reset()
|
||||||
|
|
||||||
|
err, e := event.Fire("not-exist", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Nil(t, e)
|
||||||
|
}
|
18
manager.go
18
manager.go
@@ -33,7 +33,7 @@ type Manager struct {
|
|||||||
// name of the manager
|
// name of the manager
|
||||||
name string
|
name string
|
||||||
// pool sync.Pool
|
// pool sync.Pool
|
||||||
// is an sample for new BasicEvent
|
// is a sample for new BasicEvent
|
||||||
sample *BasicEvent
|
sample *BasicEvent
|
||||||
// storage user custom Event instance. you can pre-define some Event instances.
|
// storage user custom Event instance. you can pre-define some Event instances.
|
||||||
events map[string]Event
|
events map[string]Event
|
||||||
@@ -149,7 +149,7 @@ func (em *Manager) Trigger(name string, params M) (error, Event) {
|
|||||||
return em.Fire(name, params)
|
return em.Fire(name, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fire trigger event by name
|
// Fire trigger event by name. if not found listener, will return (nil, nil)
|
||||||
func (em *Manager) Fire(name string, params M) (err error, e Event) {
|
func (em *Manager) Fire(name string, params M) (err error, e Event) {
|
||||||
name = goodName(name)
|
name = goodName(name)
|
||||||
|
|
||||||
@@ -158,13 +158,13 @@ func (em *Manager) Fire(name string, params M) (err error, e Event) {
|
|||||||
// has group listeners. "app.*" "app.db.*"
|
// has group listeners. "app.*" "app.db.*"
|
||||||
// eg: "app.db.run" will trigger listeners on the "app.db.*"
|
// eg: "app.db.run" will trigger listeners on the "app.db.*"
|
||||||
pos := strings.LastIndexByte(name, '.')
|
pos := strings.LastIndexByte(name, '.')
|
||||||
if pos > 0 && pos < len(name) {
|
if pos < 0 || pos == len(name)-1 {
|
||||||
groupName := name[:pos+1] + Wildcard // "app.db.*"
|
return // not found listeners.
|
||||||
|
}
|
||||||
|
|
||||||
// not found listeners.
|
groupName := name[:pos+1] + Wildcard // "app.db.*"
|
||||||
if false == em.HasListeners(groupName) {
|
if false == em.HasListeners(groupName) {
|
||||||
return
|
return // not found listeners.
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,7 +320,6 @@ func (em *Manager) newBasicEvent(name string, data M) *BasicEvent {
|
|||||||
|
|
||||||
cp.SetName(name)
|
cp.SetName(name)
|
||||||
cp.SetData(data)
|
cp.SetData(data)
|
||||||
|
|
||||||
return &cp
|
return &cp
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,6 +353,7 @@ func (em *Manager) ListenedNames() map[string]int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RemoveListener remove a given listener, you can limit event name.
|
// RemoveListener remove a given listener, you can limit event name.
|
||||||
|
//
|
||||||
// Usage:
|
// Usage:
|
||||||
// RemoveListener("", listener)
|
// RemoveListener("", listener)
|
||||||
// RemoveListener("name", listener) // limit event name.
|
// RemoveListener("name", listener) // limit event name.
|
||||||
|
Reference in New Issue
Block a user