-
Notifications
You must be signed in to change notification settings - Fork 4
/
listener_test.go
103 lines (83 loc) · 2.12 KB
/
listener_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// SPDX-FileCopyrightText: 2024 Comcast Cable Communications Management, LLC
// SPDX-License-Identifier: Apache-2.0
package bascule
import (
"errors"
"fmt"
"testing"
"github.com/stretchr/testify/suite"
)
type ListenerTestSuite struct {
suite.Suite
}
func (suite *ListenerTestSuite) newTestEvent() AuthenticateEvent[int] {
return AuthenticateEvent[int]{
Source: 2349732,
Token: StubToken("test token"),
Err: errors.New("expected"),
}
}
func (suite *ListenerTestSuite) TestListenerFunc() {
var (
called bool
expectedEvent = suite.newTestEvent()
l Listener[AuthenticateEvent[int]] = ListenerFunc[AuthenticateEvent[int]](
func(actualEvent AuthenticateEvent[int]) {
suite.Equal(expectedEvent, actualEvent)
called = true
},
)
)
l.OnEvent(expectedEvent)
suite.True(called)
}
func (suite *ListenerTestSuite) TestListeners() {
suite.Run("Empty", func() {
var ls Listeners[AuthenticateEvent[int]]
ls.OnEvent(AuthenticateEvent[int]{}) // should be fine
})
suite.Run("Append", func() {
for _, count := range []int{1, 2, 5} {
suite.Run(fmt.Sprintf("count=%d", count), func() {
var (
called int
expectedEvent = suite.newTestEvent()
ls Listeners[AuthenticateEvent[int]]
)
for i := 0; i < count; i++ {
var l Listener[AuthenticateEvent[int]] = ListenerFunc[AuthenticateEvent[int]](
func(actualEvent AuthenticateEvent[int]) {
suite.Equal(expectedEvent, actualEvent)
called++
},
)
ls = ls.Append(l)
}
ls.OnEvent(expectedEvent)
suite.Equal(count, called)
})
}
})
suite.Run("AppendFunc", func() {
for _, count := range []int{1, 2, 5} {
suite.Run(fmt.Sprintf("count=%d", count), func() {
var (
called int
expectedEvent = suite.newTestEvent()
ls Listeners[AuthenticateEvent[int]]
)
for i := 0; i < count; i++ {
ls = ls.AppendFunc(func(e AuthenticateEvent[int]) {
suite.Equal(expectedEvent, e)
called++
})
}
ls.OnEvent(expectedEvent)
suite.Equal(count, called)
})
}
})
}
func TestListener(t *testing.T) {
suite.Run(t, new(ListenerTestSuite))
}