doc, test: symbols as event names
authorBryan English <bryan@bryanenglish.com>
Fri, 4 Dec 2015 06:58:18 +0000 (22:58 -0800)
committerMyles Borins <mborins@us.ibm.com>
Tue, 19 Jan 2016 19:52:18 +0000 (11:52 -0800)
* Document that Symbol can used as event names.
* Add test for using Symbol as event names

PR-URL: https://github.com/nodejs/node/pull/4151
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
doc/api/events.markdown
test/parallel/test-event-emitter-symbols.js [new file with mode: 0644]

index 2d17ca2..92bec13 100644 (file)
@@ -10,7 +10,8 @@ is opened. All objects which emit events are instances of `events.EventEmitter`.
 You can access this module by doing: `require("events");`
 
 Typically, event names are represented by a camel-cased string, however,
-there aren't any strict restrictions on that, as any string will be accepted.
+there aren't any strict restrictions on that, as any valid property key will be
+accepted.
 
 Functions can then be attached to objects, to be executed when an event
 is emitted. These functions are called _listeners_. Inside a listener
@@ -59,7 +60,7 @@ Returns the number of listeners for a given event.
 
 ### Event: 'newListener'
 
-* `event` {String} The event name
+* `event` {String|Symbol} The event name
 * `listener` {Function} The event handler function
 
 This event is emitted *before* a listener is added. When this event is
@@ -70,7 +71,7 @@ added.
 
 ### Event: 'removeListener'
 
-* `event` {String} The event name
+* `event` {String|Symbol} The event name
 * `listener` {Function} The event handler function
 
 This event is emitted *after* a listener is removed.  When this event is
diff --git a/test/parallel/test-event-emitter-symbols.js b/test/parallel/test-event-emitter-symbols.js
new file mode 100644 (file)
index 0000000..d34938d
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+const common = require('../common');
+const EventEmitter = require('events');
+const assert = require('assert');
+
+const ee = new EventEmitter();
+const foo = Symbol('foo');
+const listener = common.mustCall(function() {});
+
+ee.on(foo, listener);
+assert.deepEqual(ee.listeners(foo), [listener]);
+
+ee.emit(foo);
+
+ee.removeAllListeners();
+assert.deepEqual(ee.listeners(foo), []);
+
+ee.on(foo, listener);
+assert.deepEqual(ee.listeners(foo), [listener]);
+
+ee.removeListener(foo, listener);
+assert.deepEqual(ee.listeners(foo), []);