4 * Copyright(c) 2011 LearnBoost <dev@learnboost.com>
8 (function (module, io, should) {
12 'add listeners': function () {
13 var event = new io.EventEmitter
16 event.on('test', function (a, b) {
22 event.emit('test', 'a', 'b');
23 calls.should().eql(1);
24 event.on.should().eql(event.addListener);
27 'remove listener': function () {
28 var event = new io.EventEmitter;
31 event.on('test', empty);
32 event.on('test:more', empty);
33 event.removeAllListeners('test');
35 event.listeners('test').should().eql([]);
36 event.listeners('test:more').should().eql([empty]);
39 'remove all listeners with no arguments': function () {
40 var event = new io.EventEmitter;
43 event.on('test', empty);
44 event.on('test:more', empty);
45 event.removeAllListeners();
47 event.listeners('test').should().eql([]);
48 event.listeners('test:more').should().eql([]);
51 'remove listeners functions': function () {
52 var event = new io.EventEmitter
55 function one () { ++calls }
56 function two () { ++calls }
57 function three () { ++calls }
60 event.removeListener('one', one);
61 event.listeners('one').should().eql([]);
64 event.removeListener('two', one);
65 event.listeners('two').should().eql([two]);
67 event.on('three', three);
68 event.on('three', two);
69 event.removeListener('three', three);
70 event.listeners('three').should().eql([two]);
73 'number of arguments': function () {
74 var event = new io.EventEmitter
77 event.on('test', function () {
78 number.push(arguments.length);
82 event.emit('test', null);
83 event.emit('test', null, null);
84 event.emit('test', null, null, null);
85 event.emit('test', null, null, null, null);
86 event.emit('test', null, null, null, null, null);
88 [0, 1, 2, 3, 4, 5].should().eql(number);
92 var event = new io.EventEmitter
95 event.once('test', function (a, b) {
99 event.emit('test', 'a', 'b');
100 event.emit('test', 'a', 'b');
101 event.emit('test', 'a', 'b');
103 function removed () {
104 should().fail('not removed');
107 event.once('test:removed', removed);
108 event.removeListener('test:removed', removed);
109 event.emit('test:removed');
111 calls.should().eql(1);
117 'undefined' == typeof module ? module = {} : module
118 , 'undefined' == typeof io ? require('socket.io-client') : io
119 , 'undefined' == typeof should || !should.fail ? require('should') : should