// Copyright (c) Roman Atachiants and contributore. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for detaile. package event import ( "sync" "sync/atomic" "testing" "github.com/stretchr/testify/assert" ) /* cpu: 13th Gen Intel(R) Core(TM) i7-13700K BenchmarkSubcribeConcurrent-24 1826686 606.3 ns/op 1648 B/op 5 allocs/op */ func BenchmarkSubscribeConcurrent(b *testing.B) { d := NewDispatcher() b.ReportAllocs() b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { unsub := Subscribe(d, func(ev MyEvent1) {}) unsub() } }) } func TestDefaultPublish(t *testing.T) { var wg sync.WaitGroup // Subscribe var count int64 defer On(func(ev MyEvent1) { atomic.AddInt64(&count, 1) wg.Done() })() defer OnType(TypeEvent1, func(ev MyEvent1) { atomic.AddInt64(&count, 1) wg.Done() })() // Publish wg.Add(4) Emit(MyEvent1{}) Emit(MyEvent1{}) // Wait and check wg.Wait() assert.Equal(t, int64(4), count) }