UNPKG

3.06 kBJavaScriptView Raw
1
2/*!
3 * socket.io-node
4 * Copyright(c) 2011 LearnBoost <dev@learnboost.com>
5 * MIT Licensed
6 */
7
8(function (module, io, should) {
9
10 module.exports = {
11
12 'add listeners': function () {
13 var event = new io.EventEmitter
14 , calls = 0;
15
16 event.on('test', function (a, b) {
17 ++calls;
18 a.should().eql('a');
19 b.should().eql('b');
20 });
21
22 event.emit('test', 'a', 'b');
23 calls.should().eql(1);
24 event.on.should().eql(event.addListener);
25 },
26
27 'remove listener': function () {
28 var event = new io.EventEmitter;
29 function empty () { }
30
31 event.on('test', empty);
32 event.on('test:more', empty);
33 event.removeAllListeners('test');
34
35 event.listeners('test').should().eql([]);
36 event.listeners('test:more').should().eql([empty]);
37 },
38
39 'remove all listeners with no arguments': function () {
40 var event = new io.EventEmitter;
41 function empty () { }
42
43 event.on('test', empty);
44 event.on('test:more', empty);
45 event.removeAllListeners();
46
47 // TODO: with node 0.5 we'll change this to expect []
48 event.listeners('test').should().eql([empty]);
49 event.listeners('test:more').should().eql([empty]);
50 },
51
52 'remove listeners functions': function () {
53 var event = new io.EventEmitter
54 , calls = 0;
55
56 function one () { ++calls }
57 function two () { ++calls }
58 function three () { ++calls }
59
60 event.on('one', one);
61 event.removeListener('one', one);
62 event.listeners('one').should().eql([]);
63
64 event.on('two', two);
65 event.removeListener('two', one);
66 event.listeners('two').should().eql([two]);
67
68 event.on('three', three);
69 event.on('three', two);
70 event.removeListener('three', three);
71 event.listeners('three').should().eql([two]);
72 },
73
74 'number of arguments': function () {
75 var event = new io.EventEmitter
76 , number = [];
77
78 event.on('test', function () {
79 number.push(arguments.length);
80 });
81
82 event.emit('test');
83 event.emit('test', null);
84 event.emit('test', null, null);
85 event.emit('test', null, null, null);
86 event.emit('test', null, null, null, null);
87 event.emit('test', null, null, null, null, null);
88
89 [0, 1, 2, 3, 4, 5].should().eql(number);
90 },
91
92 'once': function () {
93 var event = new io.EventEmitter
94 , calls = 0;
95
96 event.once('test', function (a, b) {
97 ++calls;
98 });
99
100 event.emit('test', 'a', 'b');
101 event.emit('test', 'a', 'b');
102 event.emit('test', 'a', 'b');
103
104 function removed () {
105 should().fail('not removed');
106 };
107
108 event.once('test:removed', removed);
109 event.removeListener('test:removed', removed);
110 event.emit('test:removed');
111
112 calls.should().eql(1);
113 }
114
115 };
116
117})(
118 'undefined' == typeof module ? module = {} : module
119 , 'undefined' == typeof io ? require('socket.io-client') : io
120 , 'undefined' == typeof should || !should.fail ? require('should') : should
121);