1 /* Copyright 2015-present Samsung Electronics Co., Ltd. and other contributors
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
16 var EventEmitter = require('events').EventEmitter;
17 var assert = require('assert');
20 var emitter = new EventEmitter();
26 var eventSequence = "";
28 emitter.once('once', function() {
33 assert.equal(onceCnt, 0);
35 assert.equal(onceCnt, 1);
37 assert.equal(onceCnt, 1);
40 emitter.once('once2', function() {
42 assert.equal(arguments.length, 14);
43 assert.equal(arguments[0], 0);
44 assert.equal(arguments[1], 1);
45 assert.equal(arguments[2], 2);
46 assert.equal(arguments[3], 3);
47 assert.equal(arguments[4], 4);
48 assert.equal(arguments[5], 5);
49 assert.equal(arguments[6], 6);
50 assert.equal(arguments[7], 7);
51 assert.equal(arguments[8], 8);
52 assert.equal(arguments[9], 9);
53 assert.equal(arguments[10], "a");
54 assert.equal(arguments[11], "b");
55 assert.equal(arguments[12], "c");
56 assert.equal(arguments[13].a, 123);
59 assert.equal(onceCnt, 1);
60 emitter.emit('once2', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", { a: 123});
61 assert.equal(onceCnt, 2);
62 emitter.emit('once2', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", { a: 123});
63 assert.equal(onceCnt, 2);
65 emitter.addListener('event', function() {
70 assert.equal(eventCnt1, 0);
71 emitter.emit('event');
72 assert.equal(eventCnt1, 1);
74 emitter.addListener('event', function() {
79 assert.equal(eventCnt2, 0);
80 emitter.emit('event');
81 assert.equal(eventCnt1, 2);
82 assert.equal(eventCnt2, 1);
84 emitter.addListener('event', function() {
89 assert.equal(eventCnt3, 0);
90 emitter.emit('event');
91 assert.equal(eventCnt1, 3);
92 assert.equal(eventCnt2, 2);
93 assert.equal(eventCnt3, 1);
94 emitter.emit('event');
95 assert.equal(eventCnt1, 4);
96 assert.equal(eventCnt2, 3);
97 assert.equal(eventCnt3, 2);
98 emitter.emit('no receiver');
99 assert.equal(eventCnt1, 4);
100 assert.equal(eventCnt2, 3);
101 assert.equal(eventCnt3, 2);
104 emitter.addListener('args', function() {
105 assert.equal(arguments.length, 14);
106 assert.equal(arguments[0], 0);
107 assert.equal(arguments[1], 1);
108 assert.equal(arguments[2], 2);
109 assert.equal(arguments[3], 3);
110 assert.equal(arguments[4], 4);
111 assert.equal(arguments[5], 5);
112 assert.equal(arguments[6], 6);
113 assert.equal(arguments[7], 7);
114 assert.equal(arguments[8], 8);
115 assert.equal(arguments[9], 9);
116 assert.equal(arguments[10], "a");
117 assert.equal(arguments[11], "b");
118 assert.equal(arguments[12], "c");
119 assert.equal(arguments[13].a, 123);
120 eventSequence += "4";
123 emitter.addListener('args', function() {
124 assert.equal(arguments.length, 14);
125 eventSequence += "5";
128 emitter.emit('args', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", { a: 123});
131 var listener1 = function() {
132 eventSequence += '6';
135 emitter.addListener('rmTest', listener1);
136 emitter.emit('rmTest');
137 emitter.removeListener('rmTest', function() {});
138 emitter.emit('rmTest');
139 emitter.removeListener('rmTest', listener1);
140 emitter.emit('rmTest');
143 var listener2 = function() {
144 eventSequence += '7';
147 emitter.addListener('rmTest', listener2);
148 emitter.addListener('rmTest', listener2);
149 emitter.emit('rmTest');
151 emitter.removeListener('rmTest', listener2);
152 emitter.emit('rmTest');
154 emitter.removeListener('rmTest', listener2);
155 emitter.emit('rmTest');
159 var listener3 = function() {
160 eventSequence += '8';
163 emitter.addListener('rmTest', listener3);
164 emitter.addListener('rmTest', listener3);
165 emitter.emit('rmTest');
166 eventSequence += "|";
167 emitter.removeAllListeners('rmTest');
168 emitter.emit('rmTest');
169 eventSequence += "|";
172 emitter.emit('event');
173 eventSequence += "|";
174 emitter.removeAllListeners();
175 emitter.emit('event');
176 eventSequence += "|";
179 assert.equal(eventSequence, "112123123456677|7||88||123||");