Browse Source

test: improve tests for util.inherits

inherits is used in lib and tests but its functionality itself is not
tested yet.

PR-URL: https://github.com/nodejs/node/pull/3507
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
v5.x
Michaël Zasso 9 years ago
committed by Rod Vagg
parent
commit
1a968e67a5
  1. 46
      test/parallel/test-util-inherits.js
  2. 7
      test/parallel/test-util.js

46
test/parallel/test-util-inherits.js

@ -0,0 +1,46 @@
'use strict';
require('../common');
const assert = require('assert');
const inherits = require('util').inherits;
// super constructor
function A() {
this._a = 'a';
}
A.prototype.a = function() { return this._a; };
// one level of inheritance
function B(value) {
A.call(this);
this._b = value;
}
inherits(B, A);
B.prototype.b = function() { return this._b; };
assert.strictEqual(B.super_, A);
const b = new B('b');
assert.strictEqual(b.a(), 'a');
assert.strictEqual(b.b(), 'b');
assert.strictEqual(b.constructor, B);
// two levels of inheritance
function C() {
B.call(this, 'b');
this._c = 'c';
}
inherits(C, B);
C.prototype.c = function() { return this._c; };
C.prototype.getValue = function() { return this.a() + this.b() + this.c(); };
assert.strictEqual(C.super_, B);
const c = new C();
assert.strictEqual(c.getValue(), 'abc');
assert.strictEqual(c.constructor, C);
// should throw with invalid arguments
assert.throws(function() { inherits(A, {}); }, TypeError);
assert.throws(function() { inherits(A, null); }, TypeError);
assert.throws(function() { inherits(null, A); }, TypeError);

7
test/parallel/test-util.js

@ -83,10 +83,3 @@ assert.deepEqual(util._extend({a:1}, true), {a:1});
assert.deepEqual(util._extend({a:1}, false), {a:1});
assert.deepEqual(util._extend({a:1}, {b:2}), {a:1, b:2});
assert.deepEqual(util._extend({a:1, b:2}, {b:3}), {a:1, b:3});
// inherits
var ctor = function() {};
assert.throws(function() { util.inherits(ctor, {}); }, TypeError);
assert.throws(function() { util.inherits(ctor, null); }, TypeError);
assert.throws(function() { util.inherits(null, ctor); }, TypeError);
assert.doesNotThrow(function() { util.inherits(ctor, ctor); }, TypeError);

Loading…
Cancel
Save