1
1
// Grab assert and the evee module
2
2
import assert from 'assert'
3
- import Evee from './dist/esm/index.js'
3
+ import Evee , { evee } from './dist/esm/index.js'
4
4
5
- // Run tests with ES6 evee
6
- run_tests ( Evee , "evee (node)" ) ;
5
+ // Run tests with evee
6
+ run_tests ( ( ) => new Evee ( ) , "evee (node, new instance)" ) ;
7
+ run_tests ( ( ) => {
8
+ evee . clear ( ) ;
9
+ return evee
10
+ } , "evee (node, shared instance)" ) ;
7
11
8
- function run_tests ( Evee , name ) {
12
+ function run_tests ( makeInstance , name ) {
9
13
describe ( name , ( ) => {
10
14
describe ( '#on(name, action)' , ( ) => {
11
15
it ( 'should dispatch properly' , ( ) => {
12
- var evee = new Evee ( ) ;
16
+ const evee = makeInstance ( ) ;
13
17
var res = false ;
14
18
evee . on ( 'a' , _ => res = true ) ;
15
19
evee . signal ( 'a' ) ;
16
20
assert . equal ( true , res ) ;
17
21
} ) ;
18
22
it ( 'should increment the id when subscribing' , ( ) => {
19
- var evee = new Evee ( ) ;
23
+ const evee = makeInstance ( ) ;
20
24
assert . equal ( 0 , evee . on ( 'a' , _ => undefined ) . id ) ;
21
25
assert . equal ( 1 , evee . on ( 'b' , _ => undefined ) . id ) ;
22
26
assert . equal ( 2 , evee . on ( 'c' , _ => undefined ) . id ) ;
23
27
} ) ;
24
28
it ( 'should throw when the name is not a string' , ( ) => {
25
- var evee = new Evee ( ) ;
29
+ const evee = makeInstance ( ) ;
26
30
assert . throws ( ( ) => evee . on ( undefined , ( ) => undefined ) ) ;
27
31
} ) ;
28
32
it ( 'should throw when the action is not a function' , ( ) => {
29
- var evee = new Evee ( ) ;
33
+ const evee = makeInstance ( ) ;
30
34
assert . throws ( ( ) => evee . on ( 'a' , undefined ) ) ;
31
35
} ) ;
32
36
it ( 'should throw when called without arguments' , ( ) => {
33
- var evee = new Evee ( ) ;
37
+ const evee = makeInstance ( ) ;
34
38
assert . throws ( ( ) => evee . on ( ) ) ;
35
39
} ) ;
36
40
} ) ;
37
41
describe ( '#once(name, action)' , ( ) => {
38
42
it ( 'should only dispatch once' , ( ) => {
39
- var evee = new Evee ( ) ;
43
+ const evee = makeInstance ( ) ;
40
44
var res = false ;
41
45
evee . once ( 'a' , _ => res = ! res ) ;
42
46
evee . signal ( 'a' , 'a' ) ;
43
47
assert . equal ( true , res ) ;
44
48
} ) ;
45
49
it ( 'should increment the id when subscribing' , ( ) => {
46
- var evee = new Evee ( ) ;
50
+ const evee = makeInstance ( ) ;
47
51
assert . equal ( 0 , evee . once ( 'a' , _ => undefined ) . id ) ;
48
52
assert . equal ( 1 , evee . once ( 'b' , _ => undefined ) . id ) ;
49
53
assert . equal ( 2 , evee . once ( 'c' , _ => undefined ) . id ) ;
50
54
} ) ;
51
55
it ( 'should throw when the name is not a string' , ( ) => {
52
- var evee = new Evee ( ) ;
56
+ const evee = makeInstance ( ) ;
53
57
assert . throws ( ( ) => evee . once ( undefined , ( ) => undefined ) ) ;
54
58
} ) ;
55
59
it ( 'should throw when the action is not a function' , ( ) => {
56
- var evee = new Evee ( ) ;
60
+ const evee = makeInstance ( ) ;
57
61
assert . throws ( ( ) => evee . once ( 'a' , undefined ) ) ;
58
62
} ) ;
59
63
} ) ;
60
64
describe ( '#drop(event)' , ( ) => {
61
65
it ( 'should return true when subscriptions were removed' , ( ) => {
62
- var evee = new Evee ( ) ;
66
+ const evee = makeInstance ( ) ;
63
67
var ev = evee . on ( 'a' , _ => undefined ) ;
64
68
assert . equal ( true , evee . drop ( ev ) ) ;
65
69
} ) ;
66
70
it ( 'should throw when the argument is not an event object' , ( ) => {
67
- var evee = new Evee ( ) ;
71
+ const evee = makeInstance ( ) ;
68
72
assert . throws ( ( ) => evee . drop ( 0 ) ) ;
69
73
} ) ;
70
74
it ( 'should throw when called without arguments' , ( ) => {
71
- var evee = new Evee ( ) ;
75
+ const evee = makeInstance ( ) ;
72
76
assert . throws ( ( ) => evee . drop ( ) ) ;
73
77
} ) ;
74
78
it ( 'should remove the right event' , ( ) => {
75
- var evee = new Evee ( ) ;
79
+ const evee = makeInstance ( ) ;
76
80
var resa = false ;
77
81
var resb = false ;
78
82
var eva = evee . on ( 'a' , _ => resa = true ) ;
@@ -85,7 +89,7 @@ function run_tests(Evee, name) {
85
89
} ) ;
86
90
describe ( '#emit(name, data)' , ( ) => {
87
91
it ( 'should transmit the correct event data when dispatching' , ( ) => {
88
- var evee = new Evee ( ) ;
92
+ const evee = makeInstance ( ) ;
89
93
var res = 0 ;
90
94
evee . on ( 'a' , e => res += e . data ) ;
91
95
evee . on ( 'b' , e => res += e . data ) ;
@@ -94,50 +98,50 @@ function run_tests(Evee, name) {
94
98
assert . equal ( 22 , res ) ;
95
99
} ) ;
96
100
it ( 'should transmit the correct sender when dispatching' , ( ) => {
97
- var evee = new Evee ( ) ;
101
+ const evee = makeInstance ( ) ;
98
102
var res = false ;
99
103
var sender = evee . on ( 'a' , e => res = e . sender === sender ) ;
100
104
evee . emit ( 'a' ) ;
101
105
assert . equal ( true , res ) ;
102
106
} ) ;
103
107
it ( 'should not dispatch when the event name matches no receivers' , ( ) => {
104
- var evee = new Evee ( ) ;
108
+ const evee = makeInstance ( ) ;
105
109
var res = false ;
106
110
evee . on ( 'a' , _ => res = true ) ;
107
111
evee . emit ( 'b' ) ;
108
112
assert . equal ( false , res ) ;
109
113
} ) ;
110
114
it ( 'should dispatch when the event name matches a receiver' , ( ) => {
111
- var evee = new Evee ( ) ;
115
+ const evee = makeInstance ( ) ;
112
116
var res = false ;
113
117
evee . on ( 'a' , _ => res = true ) ;
114
118
evee . emit ( 'a' ) ;
115
119
assert . equal ( true , res ) ;
116
120
} ) ;
117
121
it ( 'should dispatch when the event name matches multiple receivers' , ( ) => {
118
- var evee = new Evee ( ) ;
122
+ const evee = makeInstance ( ) ;
119
123
var res = 0 ;
120
124
evee . on ( 'a' , _ => ++ res ) ;
121
125
evee . on ( 'a' , _ => ++ res ) ;
122
126
evee . emit ( 'a' ) ;
123
127
assert . equal ( 2 , res ) ;
124
128
} ) ;
125
129
it ( 'should dispatch events with data' , ( ) => {
126
- var evee = new Evee ( ) ;
130
+ const evee = makeInstance ( ) ;
127
131
var res = false ;
128
132
evee . on ( 'a' , e => res = e . data ) ;
129
133
evee . emit ( 'a' , true ) ;
130
134
assert . equal ( true , res ) ;
131
135
} ) ;
132
136
it ( 'should dispatch events without data' , ( ) => {
133
- var evee = new Evee ( ) ;
137
+ const evee = makeInstance ( ) ;
134
138
var res = false ;
135
139
evee . on ( 'a' , e => res = e . data === undefined ? true : false ) ;
136
140
evee . emit ( 'a' ) ;
137
141
assert . equal ( true , res ) ;
138
142
} ) ;
139
143
it ( 'should dispatch multiple events with the same data' , ( ) => {
140
- var evee = new Evee ( ) ;
144
+ const evee = makeInstance ( ) ;
141
145
var resa = false ;
142
146
var resb = false ;
143
147
evee . on ( 'a' , e => resa = e . data ) ;
@@ -147,7 +151,7 @@ function run_tests(Evee, name) {
147
151
assert . equal ( true , resb ) ;
148
152
} ) ;
149
153
it ( 'should dispatch multiple events with no data' , ( ) => {
150
- var evee = new Evee ( ) ;
154
+ const evee = makeInstance ( ) ;
151
155
var resa = true ;
152
156
var resb = false ;
153
157
evee . on ( 'a' , e => resa = e . data === undefined ? resa : ! resa ) ;
@@ -157,7 +161,7 @@ function run_tests(Evee, name) {
157
161
assert . equal ( true , resb ) ;
158
162
} ) ;
159
163
it ( 'should dispatch multiple events with different data' , ( ) => {
160
- var evee = new Evee ( ) ;
164
+ const evee = makeInstance ( ) ;
161
165
var resa = false ;
162
166
var resb = true ;
163
167
evee . on ( 'a' , e => resa = e . data ) ;
@@ -167,13 +171,13 @@ function run_tests(Evee, name) {
167
171
assert . equal ( false , resb ) ;
168
172
} ) ;
169
173
it ( 'should throw when called without arguments' , ( ) => {
170
- var evee = new Evee ( ) ;
174
+ const evee = makeInstance ( ) ;
171
175
assert . throws ( ( ) => evee . emit ( ) ) ;
172
176
} ) ;
173
177
} ) ;
174
178
describe ( '#signal(...names)' , ( ) => {
175
179
it ( 'should correctly dispatch multiple events a single time' , ( ) => {
176
- var evee = new Evee ( ) ;
180
+ const evee = makeInstance ( ) ;
177
181
var resa = false ;
178
182
var resb = false ;
179
183
evee . on ( 'a' , _ => resa = true ) ;
@@ -183,28 +187,28 @@ function run_tests(Evee, name) {
183
187
assert . equal ( true , resb ) ;
184
188
} ) ;
185
189
it ( 'should correctly dispatch the same event multiple multiple' , ( ) => {
186
- var evee = new Evee ( ) ;
190
+ const evee = makeInstance ( ) ;
187
191
var res = false ;
188
192
evee . on ( 'a' , _ => res = ! res ) ;
189
193
evee . signal ( 'a' , 'a' , 'a' ) ;
190
194
assert . equal ( true , res ) ;
191
195
} ) ;
192
196
it ( 'should throw when called without arguments' , ( ) => {
193
- var evee = new Evee ( ) ;
197
+ const evee = makeInstance ( ) ;
194
198
assert . throws ( ( ) => evee . signal ( ) ) ;
195
199
} ) ;
196
200
} ) ;
197
201
describe ( '#clear()' , ( ) => {
198
202
it ( 'should clear the receiver list' , ( ) => {
199
- var evee = new Evee ( ) ;
203
+ const evee = makeInstance ( ) ;
200
204
var res = false ;
201
205
evee . on ( 'a' , _ => res = true ) ;
202
206
evee . clear ( ) ;
203
207
evee . signal ( 'a' ) ;
204
208
assert . equal ( false , res ) ;
205
209
} ) ;
206
210
it ( 'should not throw when no subscriptions are active' , ( ) => {
207
- var evee = new Evee ( ) ;
211
+ const evee = makeInstance ( ) ;
208
212
assert . doesNotThrow ( ( ) => evee . clear ( ) ) ;
209
213
} ) ;
210
214
} ) ;
0 commit comments