12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package raft
- import (
- "testing"
- "github.com/stretchr/testify/assert"
- )
- // Ensure that we can listen and dispatch events.
- func TestDispatchEvent(t *testing.T) {
- var count int
- dispatcher := newEventDispatcher(nil)
- dispatcher.AddEventListener("foo", func(e Event) {
- count += 1
- })
- dispatcher.AddEventListener("foo", func(e Event) {
- count += 10
- })
- dispatcher.AddEventListener("bar", func(e Event) {
- count += 100
- })
- dispatcher.DispatchEvent(&event{typ: "foo", value: nil, prevValue: nil})
- assert.Equal(t, 11, count)
- }
- // Ensure that we can add and remove a listener.
- func TestRemoveEventListener(t *testing.T) {
- var count int
- f0 := func(e Event) {
- count += 1
- }
- f1 := func(e Event) {
- count += 10
- }
- dispatcher := newEventDispatcher(nil)
- dispatcher.AddEventListener("foo", f0)
- dispatcher.AddEventListener("foo", f1)
- dispatcher.DispatchEvent(&event{typ: "foo"})
- dispatcher.RemoveEventListener("foo", f0)
- dispatcher.DispatchEvent(&event{typ: "foo"})
- assert.Equal(t, 21, count)
- }
- // Ensure that event is properly passed to listener.
- func TestEventListener(t *testing.T) {
- dispatcher := newEventDispatcher("X")
- dispatcher.AddEventListener("foo", func(e Event) {
- assert.Equal(t, "foo", e.Type())
- assert.Equal(t, "X", e.Source())
- assert.Equal(t, 10, e.Value())
- assert.Equal(t, 20, e.PrevValue())
- })
- dispatcher.DispatchEvent(&event{typ: "foo", value: 10, prevValue: 20})
- }
- // Benchmark the performance of event dispatch.
- func BenchmarkEventDispatch(b *testing.B) {
- dispatcher := newEventDispatcher(nil)
- dispatcher.AddEventListener("xxx", func(e Event) {})
- for i := 0; i < b.N; i++ {
- dispatcher.DispatchEvent(&event{typ: "foo", value: 10, prevValue: 20})
- }
- }
|