react / wstein / node_modules / browserify / node_modules / events / tests / remove-all-listeners.js
80529 views// Copyright Joyent, Inc. and other Node contributors.1//2// Permission is hereby granted, free of charge, to any person obtaining a3// copy of this software and associated documentation files (the4// "Software"), to deal in the Software without restriction, including5// without limitation the rights to use, copy, modify, merge, publish,6// distribute, sublicense, and/or sell copies of the Software, and to permit7// persons to whom the Software is furnished to do so, subject to the8// following conditions:9//10// The above copyright notice and this permission notice shall be included11// in all copies or substantial portions of the Software.12//13// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS14// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF15// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN16// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,17// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR18// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE19// USE OR OTHER DEALINGS IN THE SOFTWARE.2021var common = require('./common');22var assert = require('assert');23var events = require('../');2425var after_checks = [];26after(function() {27for (var i=0 ; i<after_checks.length ; ++i) {28after_checks[i]();29}30});3132function expect(expected) {33var actual = [];34after_checks.push(function() {35assert.deepEqual(actual.sort(), expected.sort());36});3738function listener(name) {39actual.push(name)40}41return common.mustCall(listener, expected.length);42}4344function listener() {}4546var e1 = new events.EventEmitter();47e1.on('foo', listener);48e1.on('bar', listener);49e1.on('baz', listener);50e1.on('baz', listener);51var fooListeners = e1.listeners('foo');52var barListeners = e1.listeners('bar');53var bazListeners = e1.listeners('baz');54e1.on('removeListener', expect(['bar', 'baz', 'baz']));55e1.removeAllListeners('bar');56e1.removeAllListeners('baz');57assert.deepEqual(e1.listeners('foo'), [listener]);58assert.deepEqual(e1.listeners('bar'), []);59assert.deepEqual(e1.listeners('baz'), []);60// after calling removeAllListeners,61// the old listeners array should stay unchanged62assert.deepEqual(fooListeners, [listener]);63assert.deepEqual(barListeners, [listener]);64assert.deepEqual(bazListeners, [listener, listener]);65// after calling removeAllListeners,66// new listeners arrays are different from the old67assert.notEqual(e1.listeners('bar'), barListeners);68assert.notEqual(e1.listeners('baz'), bazListeners);6970var e2 = new events.EventEmitter();71e2.on('foo', listener);72e2.on('bar', listener);73// expect LIFO order74e2.on('removeListener', expect(['foo', 'bar', 'removeListener']));75e2.on('removeListener', expect(['foo', 'bar']));76e2.removeAllListeners();77console.error(e2);78assert.deepEqual([], e2.listeners('foo'));79assert.deepEqual([], e2.listeners('bar'));808182