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>
This commit is contained in:
parent
57359cd1e4
commit
df738ac56c
46
test/parallel/test-util-inherits.js
Normal file
46
test/parallel/test-util-inherits.js
Normal file
@ -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);
|
@ -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…
x
Reference in New Issue
Block a user