Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Avatar for KuCalc : devops.
Download
50655 views
1
var simpleEvents= require('nodeunit').testCase;
2
3
var file = '../../lib/eventemitter2';
4
5
module.exports = simpleEvents({
6
7
setUp: function (callback) {
8
var EventEmitter2;
9
10
if(typeof require !== 'undefined') {
11
EventEmitter2 = require(file).EventEmitter2;
12
}
13
else {
14
EventEmitter2 = window.EventEmitter2;
15
}
16
17
this.emitter = new EventEmitter2({
18
wildcard : true,
19
verbose : true
20
});
21
callback();
22
},
23
24
tearDown: function (callback) {
25
//clean up?
26
callback();
27
},
28
29
'1. add a single event and then remove the event.' : function (test) {
30
var emitter = this.emitter,
31
type = 'remove.foo.bar',
32
listeners;
33
34
var f = function () {
35
test.ok(true, 'event was raised');
36
};
37
38
emitter.on(type, f);
39
listeners = emitter.listeners(type);
40
test.equal(listeners.length, 1, 'should only have 1');
41
42
//remove
43
emitter.removeListener(type, f);
44
listeners = emitter.listeners(type);
45
test.equal(listeners.length, 0, 'should be 0');
46
47
test.expect(2);
48
test.done();
49
},
50
51
'2. Add two events and then remove only one of those events.' : function (test) {
52
var emitter = this.emitter,
53
type = 'remove.foo.bar',
54
listeners;
55
56
var f = function f() {
57
test.ok(true, 'event was raised');
58
};
59
60
emitter.on(type, f);
61
emitter.on(type, f);
62
63
listeners = emitter.listeners(type);
64
test.equal(listeners.length, 2, 'should only have 2');
65
66
emitter.removeListener(type, f);
67
68
listeners = emitter.listeners(type);
69
test.equal(listeners.length, 1, 'should be 1');
70
71
test.expect(2);
72
test.done();
73
},
74
75
'3. Add three events and remove only one of the events that was added.' : function (test) {
76
var emitter = this.emitter,
77
type = 'remove.foo.bar',
78
listeners;
79
80
var f = function () {
81
test.ok(true, 'event was raised');
82
};
83
84
emitter.on(type, f);
85
emitter.on(type, f);
86
emitter.on(type, f);
87
listeners = emitter.listeners(type);
88
test.equal(listeners.length, 3, 'should only have 3');
89
90
//remove
91
emitter.removeListener(type, f);
92
listeners = emitter.listeners(type);
93
test.equal(listeners.length, 2, 'should be 2');
94
95
test.expect(2);
96
test.done();
97
},
98
99
'4. Should error if we don\'t pass a function to the emit method.' : function (test) {
100
var emitter = this.emitter,
101
type = 'remove.foo.bar',
102
listeners;
103
104
var f = function () {
105
test.ok(true, 'event was raised');
106
};
107
108
emitter.on(type, f);
109
listeners = emitter.listeners(type);
110
test.equal(listeners.length, 1, 'should only have 1');
111
112
//remove
113
test.throws(function () {emitter.removeListener(type, type)}, Error, 'should throw an Error');
114
listeners = emitter.listeners(type);
115
test.equal(listeners.length, 1, 'should be 1');
116
117
test.expect(3);
118
test.done();
119
},
120
121
'5. Removing one listener should not affect another listener.' : function (test) {
122
var emitter = this.emitter,
123
type = 'remove.foo.bar',
124
listeners;
125
126
var f = function () {
127
test.ok(true, 'event was raised');
128
};
129
var g = function () {
130
test.ok(true, 'event was raised');
131
};
132
133
emitter.on(type, f);
134
listeners = emitter.listeners(type);
135
test.equal(listeners.length, 1, 'should only have 1');
136
137
//remove
138
emitter.removeListener(type, g);
139
listeners = emitter.listeners(type);
140
test.equal(listeners.length, 1, 'should be 1');
141
142
test.expect(2);
143
test.done();
144
},
145
146
'6. Remove all listener functions.' : function (test) {
147
148
var emitter = this.emitter,
149
type = 'remove.foo.bar',
150
listeners;
151
152
var f = function () {
153
test.ok(true, 'event was raised');
154
};
155
for (var i = 0; i < 10; i++) {
156
emitter.on(type, f);
157
}
158
159
listeners = emitter.listeners(type);
160
test.equal(listeners.length, 10, 'should only have 10');
161
162
emitter.removeListener(type, f);
163
listeners = emitter.listeners(type);
164
test.equal(listeners.length, 9, 'should be 9');
165
emitter.removeAllListeners(type);
166
listeners = emitter.listeners(type);
167
test.equal(listeners.length, 0, 'should be 0');
168
169
test.expect(3);
170
test.done();
171
},
172
173
'7. Removing listeners for one event should not affect another event\'s listeners.' : function (test) {
174
175
var emitter = this.emitter;
176
177
var type = 'remove.foo.bar';
178
179
var listeners;
180
181
var f = function () {
182
test.ok(true, 'event was raised');
183
};
184
185
for (var i = 0; i < 10; i++) {
186
emitter.on(type, f);
187
}
188
189
listeners = emitter.listeners(type);
190
test.equal(listeners.length, 10, 'should only have 10');
191
192
emitter.removeListener(type+type, f);
193
194
listeners = emitter.listeners(type);
195
test.equal(listeners.length, 10, 'should be 10');
196
197
emitter.removeAllListeners(type+type);
198
listeners = emitter.listeners(type);
199
test.equal(listeners.length, 10, 'should be 10');
200
201
emitter.removeAllListeners(type+'.'+type);
202
listeners = emitter.listeners(type);
203
test.equal(listeners.length, 10, 'should be 10');
204
205
emitter.removeAllListeners(type);
206
listeners = emitter.listeners(type);
207
test.equal(listeners.length, 0, 'should be 0');
208
209
test.expect(5);
210
test.done();
211
},
212
213
'8. Its ok to listen on wildcard, so it is ok to remove it.' : function (test) {
214
var emitter = this.emitter,
215
type1 = '*.wild.card',
216
type2 = 'just.another.event',
217
listeners;
218
219
var f = function () {
220
test.ok(true, 'event was raised');
221
};
222
223
emitter.on(type2, f);
224
emitter.on(type1, f);
225
226
//remove
227
emitter.removeListener(type1, f);
228
listeners = emitter.listeners(type1);
229
test.equal(listeners.length, 0, 'should be 0');
230
231
test.expect(1);
232
test.done();
233
},
234
235
'9. And (8) should not depend on order of listening.' : function (test) {
236
var emitter = this.emitter,
237
type1 = '*.wild.card',
238
type2 = 'just.another.event',
239
listeners;
240
241
var f = function () {
242
test.ok(true, 'event was raised');
243
};
244
245
emitter.on(type1, f);
246
emitter.on(type2, f);
247
248
//remove
249
emitter.removeListener(type1, f);
250
listeners = emitter.listeners(type1);
251
test.equal(listeners.length, 0, 'should be 0');
252
253
test.expect(1);
254
test.done();
255
},
256
257
'10. Reporting many listeners on wildcard all should removed.' : function (test) {
258
var emitter = this.emitter,
259
type1 = '*.wild.card',
260
type2 = 'exact.wild.card',
261
listeners;
262
263
var f = function () {
264
test.ok(true, 'event was raised');
265
};
266
267
emitter.on(type1, f);
268
emitter.on(type2, f);
269
270
// check number of listeners by wild card
271
listeners = emitter.listeners(type1);
272
test.equal(listeners.length, 2, 'should only have 2');
273
274
// remove by wild card should remove both
275
emitter.removeListener(type1, f);
276
listeners = emitter.listeners(type1);
277
test.equal(listeners.length, 0, 'should be 0');
278
279
test.expect(2);
280
test.done();
281
}
282
283
284
});
285
286