source: trip-planner-front/node_modules/events/tests/remove-all-listeners.js@ e29cc2e

Last change on this file since e29cc2e was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 4.6 KB
Line 
1// Copyright Joyent, Inc. and other Node contributors.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and associated documentation files (the
5// "Software"), to deal in the Software without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Software, and to permit
8// persons to whom the Software is furnished to do so, subject to the
9// following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Software.
13//
14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20// USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22var common = require('./common');
23var assert = require('assert');
24var events = require('../');
25var test = require('tape');
26
27function expect(expected) {
28 var actual = [];
29 test.onFinish(function() {
30 var sortedActual = actual.sort();
31 var sortedExpected = expected.sort();
32 assert.strictEqual(sortedActual.length, sortedExpected.length);
33 for (var index = 0; index < sortedActual.length; index++) {
34 var value = sortedActual[index];
35 assert.strictEqual(value, sortedExpected[index]);
36 }
37 });
38 function listener(name) {
39 actual.push(name);
40 }
41 return common.mustCall(listener, expected.length);
42}
43
44{
45 var ee = new events.EventEmitter();
46 var noop = common.mustNotCall();
47 ee.on('foo', noop);
48 ee.on('bar', noop);
49 ee.on('baz', noop);
50 ee.on('baz', noop);
51 var fooListeners = ee.listeners('foo');
52 var barListeners = ee.listeners('bar');
53 var bazListeners = ee.listeners('baz');
54 ee.on('removeListener', expect(['bar', 'baz', 'baz']));
55 ee.removeAllListeners('bar');
56 ee.removeAllListeners('baz');
57
58 var listeners = ee.listeners('foo');
59 assert.ok(Array.isArray(listeners));
60 assert.strictEqual(listeners.length, 1);
61 assert.strictEqual(listeners[0], noop);
62
63 listeners = ee.listeners('bar');
64 assert.ok(Array.isArray(listeners));
65 assert.strictEqual(listeners.length, 0);
66 listeners = ee.listeners('baz');
67 assert.ok(Array.isArray(listeners));
68 assert.strictEqual(listeners.length, 0);
69 // After calling removeAllListeners(),
70 // the old listeners array should stay unchanged.
71 assert.strictEqual(fooListeners.length, 1);
72 assert.strictEqual(fooListeners[0], noop);
73 assert.strictEqual(barListeners.length, 1);
74 assert.strictEqual(barListeners[0], noop);
75 assert.strictEqual(bazListeners.length, 2);
76 assert.strictEqual(bazListeners[0], noop);
77 assert.strictEqual(bazListeners[1], noop);
78 // After calling removeAllListeners(),
79 // new listeners arrays is different from the old.
80 assert.notStrictEqual(ee.listeners('bar'), barListeners);
81 assert.notStrictEqual(ee.listeners('baz'), bazListeners);
82}
83
84{
85 var ee = new events.EventEmitter();
86 ee.on('foo', common.mustNotCall());
87 ee.on('bar', common.mustNotCall());
88 // Expect LIFO order
89 ee.on('removeListener', expect(['foo', 'bar', 'removeListener']));
90 ee.on('removeListener', expect(['foo', 'bar']));
91 ee.removeAllListeners();
92
93 var listeners = ee.listeners('foo');
94 assert.ok(Array.isArray(listeners));
95 assert.strictEqual(listeners.length, 0);
96 listeners = ee.listeners('bar');
97 assert.ok(Array.isArray(listeners));
98 assert.strictEqual(listeners.length, 0);
99}
100
101{
102 var ee = new events.EventEmitter();
103 ee.on('removeListener', common.mustNotCall());
104 // Check for regression where removeAllListeners() throws when
105 // there exists a 'removeListener' listener, but there exists
106 // no listeners for the provided event type.
107 assert.doesNotThrow(function () { ee.removeAllListeners(ee, 'foo') });
108}
109
110{
111 var ee = new events.EventEmitter();
112 var expectLength = 2;
113 ee.on('removeListener', function() {
114 assert.strictEqual(expectLength--, this.listeners('baz').length);
115 });
116 ee.on('baz', common.mustNotCall());
117 ee.on('baz', common.mustNotCall());
118 ee.on('baz', common.mustNotCall());
119 assert.strictEqual(ee.listeners('baz').length, expectLength + 1);
120 ee.removeAllListeners('baz');
121 assert.strictEqual(ee.listeners('baz').length, 0);
122}
123
124{
125 var ee = new events.EventEmitter();
126 assert.strictEqual(ee, ee.removeAllListeners());
127}
128
129{
130 var ee = new events.EventEmitter();
131 ee._events = undefined;
132 assert.strictEqual(ee, ee.removeAllListeners());
133}
Note: See TracBrowser for help on using the repository browser.