From 1abc568f68b0b17f277fee29c7ce8c2420d3ac94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 24 Oct 2015 10:42:29 +0200 Subject: [PATCH 1/2] test: improve tests for util.inherits inherits is used in lib and tests but its functionality itself is not tested yet. --- test/parallel/test-util-inherits.js | 41 +++++++++++++++++++++++++++++ test/parallel/test-util.js | 7 ----- 2 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 test/parallel/test-util-inherits.js diff --git a/test/parallel/test-util-inherits.js b/test/parallel/test-util-inherits.js new file mode 100644 index 00000000000000..d64d863bb3119b --- /dev/null +++ b/test/parallel/test-util-inherits.js @@ -0,0 +1,41 @@ +'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; }; + +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(); }; + +const c = new C(); +assert.strictEqual(c.getValue(), 'abc'); + +// 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); diff --git a/test/parallel/test-util.js b/test/parallel/test-util.js index 79e104546b7f37..700532bd5a397b 100644 --- a/test/parallel/test-util.js +++ b/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); From 450a910fc5b7f9a34c5b42d96b2c89cc492c8db0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 24 Oct 2015 13:16:28 +0200 Subject: [PATCH 2/2] fixup! test: improve tests for util.inherits --- test/parallel/test-util-inherits.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/parallel/test-util-inherits.js b/test/parallel/test-util-inherits.js index d64d863bb3119b..baa77ea4405484 100644 --- a/test/parallel/test-util-inherits.js +++ b/test/parallel/test-util-inherits.js @@ -18,6 +18,8 @@ function 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'); @@ -32,8 +34,11 @@ 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);