Mirror of github.com/gissleh/irc
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package irc_test
import ( "context" "math/rand" "strconv" "testing" "time"
"git.aiterp.net/gisle/irc" )
func TestHandle(t *testing.T) { rng := rand.NewSource(time.Now().UnixNano()) eventName := strconv.FormatInt(rng.Int63(), 36) + strconv.FormatInt(rng.Int63(), 36) + strconv.FormatInt(rng.Int63(), 36)
client := irc.New(context.Background(), irc.Config{}) event := irc.NewEvent("test", eventName) handled := false
handle := irc.Handle(func(event *irc.Event, client *irc.Client) { t.Log("Got:", event.Kind(), event.Verb())
if event.Kind() == "test" && event.Verb() == eventName { handled = true } })
client.EmitSync(context.Background(), event) if !handled { t.Error("Event wasn't handled") }
if !irc.RemoveHandler(handle) { t.Error("Couldn't remove handler") }
handled = false client.EmitSync(context.Background(), event)
if handled { t.Error("Event was handled after handler was removed") } }
func BenchmarkHandle(b *testing.B) { rng := rand.NewSource(time.Now().UnixNano()) eventName := strconv.FormatInt(rng.Int63(), 36) + strconv.FormatInt(rng.Int63(), 36) + strconv.FormatInt(rng.Int63(), 36)
client := irc.New(context.Background(), irc.Config{}) event := irc.NewEvent("test", eventName)
b.Run("Emit", func(b *testing.B) { for n := 0; n < b.N; n++ { client.Emit(event) } })
b.Run("EmitSync", func(b *testing.B) { for n := 0; n < b.N; n++ { client.EmitSync(context.Background(), event) } }) }
|