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}, false), {a:1});
|
||||||
assert.deepEqual(util._extend({a:1}, {b:2}), {a:1, b:2});
|
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});
|
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