diff options
author | Michaël Zasso <mic.besace@gmail.com> | 2015-10-24 10:42:29 +0200 |
---|---|---|
committer | Michaël Zasso <mic.besace@gmail.com> | 2015-10-26 09:37:33 +0100 |
commit | df738ac56c31ac8a04d6afbd3d7be59cfa5c2e9a (patch) | |
tree | fd7a26047e0495251d728ab31745331a214374d7 /test/parallel/test-util-inherits.js | |
parent | 57359cd1e45084ac107ca5b16fe2a1423139d711 (diff) | |
download | node-new-df738ac56c31ac8a04d6afbd3d7be59cfa5c2e9a.tar.gz |
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>
Diffstat (limited to 'test/parallel/test-util-inherits.js')
-rw-r--r-- | test/parallel/test-util-inherits.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/parallel/test-util-inherits.js b/test/parallel/test-util-inherits.js new file mode 100644 index 0000000000..baa77ea440 --- /dev/null +++ b/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); |