summaryrefslogtreecommitdiff
path: root/test/parallel/test-util-inherits.js
diff options
context:
space:
mode:
authorMichaël Zasso <mic.besace@gmail.com>2015-10-24 10:42:29 +0200
committerMichaël Zasso <mic.besace@gmail.com>2015-10-26 09:37:33 +0100
commitdf738ac56c31ac8a04d6afbd3d7be59cfa5c2e9a (patch)
treefd7a26047e0495251d728ab31745331a214374d7 /test/parallel/test-util-inherits.js
parent57359cd1e45084ac107ca5b16fe2a1423139d711 (diff)
downloadandroid-node-v8-df738ac56c31ac8a04d6afbd3d7be59cfa5c2e9a.tar.gz
android-node-v8-df738ac56c31ac8a04d6afbd3d7be59cfa5c2e9a.tar.bz2
android-node-v8-df738ac56c31ac8a04d6afbd3d7be59cfa5c2e9a.zip
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.js46
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);