/
events.test.js
120 lines (91 loc) · 2.92 KB
/
events.test.js
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*!
* socket.io-node
* Copyright(c) 2011 LearnBoost <dev@learnboost.com>
* MIT Licensed
*/
(function (module, io, should) {
module.exports = {
'add listeners': function () {
var event = new io.EventEmitter
, calls = 0;
event.on('test', function (a, b) {
++calls;
a.should().eql('a');
b.should().eql('b');
});
event.emit('test', 'a', 'b');
calls.should().eql(1);
event.on.should().eql(event.addListener);
},
'remove listener': function () {
var event = new io.EventEmitter;
function empty () { }
event.on('test', empty);
event.on('test:more', empty);
event.removeAllListeners('test');
event.listeners('test').should().eql([]);
event.listeners('test:more').should().eql([empty]);
},
'remove all listeners with no arguments': function () {
var event = new io.EventEmitter;
function empty () { }
event.on('test', empty);
event.on('test:more', empty);
event.removeAllListeners();
event.listeners('test').should().eql([]);
event.listeners('test:more').should().eql([]);
},
'remove listeners functions': function () {
var event = new io.EventEmitter
, calls = 0;
function one () { ++calls }
function two () { ++calls }
function three () { ++calls }
event.on('one', one);
event.removeListener('one', one);
event.listeners('one').should().eql([]);
event.on('two', two);
event.removeListener('two', one);
event.listeners('two').should().eql([two]);
event.on('three', three);
event.on('three', two);
event.removeListener('three', three);
event.listeners('three').should().eql([two]);
},
'number of arguments': function () {
var event = new io.EventEmitter
, number = [];
event.on('test', function () {
number.push(arguments.length);
});
event.emit('test');
event.emit('test', null);
event.emit('test', null, null);
event.emit('test', null, null, null);
event.emit('test', null, null, null, null);
event.emit('test', null, null, null, null, null);
[0, 1, 2, 3, 4, 5].should().eql(number);
},
'once': function () {
var event = new io.EventEmitter
, calls = 0;
event.once('test', function (a, b) {
++calls;
});
event.emit('test', 'a', 'b');
event.emit('test', 'a', 'b');
event.emit('test', 'a', 'b');
function removed () {
should().fail('not removed');
};
event.once('test:removed', removed);
event.removeListener('test:removed', removed);
event.emit('test:removed');
calls.should().eql(1);
}
};
})(
'undefined' == typeof module ? module = {} : module
, 'undefined' == typeof io ? require('socket.io-client') : io
, 'undefined' == typeof should || !should.fail ? require('should') : should
);