subclass.js
 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  
22  var assert = require('assert');
23  var EventEmitter = require('../').EventEmitter;
24  var util = require('util');
25  
26  util.inherits(MyEE, EventEmitter);
27  
28  function MyEE(cb) {
29    this.once(1, cb);
30    this.emit(1);
31    this.removeAllListeners();
32    EventEmitter.call(this);
33  }
34  
35  var called = false;
36  var myee = new MyEE(function() {
37    called = true;
38  });
39  
40  
41  util.inherits(ErrorEE, EventEmitter);
42  function ErrorEE() {
43    this.emit('error', new Error('blerg'));
44  }
45  
46  assert.throws(function() {
47    new ErrorEE();
48  }, /blerg/);
49  
50  assert(called);
51  assert.deepEqual(myee._events, {});