diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/tests/non262/object/isPrototypeOf.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | js/src/tests/non262/object/isPrototypeOf.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/js/src/tests/non262/object/isPrototypeOf.js b/js/src/tests/non262/object/isPrototypeOf.js new file mode 100644 index 0000000000..a2d78f6507 --- /dev/null +++ b/js/src/tests/non262/object/isPrototypeOf.js @@ -0,0 +1,86 @@ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + */ + +var gTestfile = 'isPrototypeOf.js'; +var BUGNUMBER = 619283; +var summary = "Object.prototype.isPrototypeOf"; + +print(BUGNUMBER + ": " + summary); + +/************** + * BEGIN TEST * + **************/ + +function expectThrowTypeError(fun) +{ + try + { + var r = fun(); + throw new Error("didn't throw TypeError, returned " + r); + } + catch (e) + { + assertEq(e instanceof TypeError, true, + "didn't throw TypeError, got: " + e); + } +} + +var isPrototypeOf = Object.prototype.isPrototypeOf; + +/* + * 1. If V is not an Object, return false. + */ +assertEq(isPrototypeOf(), false); +assertEq(isPrototypeOf(1), false); +assertEq(isPrototypeOf(Number.MAX_VALUE), false); +assertEq(isPrototypeOf(NaN), false); +assertEq(isPrototypeOf(""), false); +assertEq(isPrototypeOf("sesquicentennial"), false); +assertEq(isPrototypeOf(true), false); +assertEq(isPrototypeOf(false), false); +assertEq(isPrototypeOf(0.72), false); +assertEq(isPrototypeOf(undefined), false); +assertEq(isPrototypeOf(null), false); + + +/* + * 2. Let O be the result of calling ToObject passing the this value as the + * argument. + */ +var protoGlobal = Object.create(this); +expectThrowTypeError(function() { isPrototypeOf.call(null, {}); }); +expectThrowTypeError(function() { isPrototypeOf.call(undefined, {}); }); +expectThrowTypeError(function() { isPrototypeOf({}); }); +expectThrowTypeError(function() { isPrototypeOf.call(null, protoGlobal); }); +expectThrowTypeError(function() { isPrototypeOf.call(undefined, protoGlobal); }); +expectThrowTypeError(function() { isPrototypeOf(protoGlobal); }); + + +/* + * 3. Repeat + */ + +/* + * 3a. Let V be the value of the [[Prototype]] internal property of V. + * 3b. If V is null, return false. + */ +assertEq(Object.prototype.isPrototypeOf(Object.prototype), false); +assertEq(String.prototype.isPrototypeOf({}), false); +assertEq(Object.prototype.isPrototypeOf(Object.create(null)), false); + +/* 3c. If O and V refer to the same object, return true. */ +assertEq(Object.prototype.isPrototypeOf({}), true); +assertEq(this.isPrototypeOf(protoGlobal), true); +assertEq(Object.prototype.isPrototypeOf({}), true); +assertEq(Object.prototype.isPrototypeOf(new Number(17)), true); +assertEq(Object.prototype.isPrototypeOf(function(){}), true); + + +/******************************************************************************/ + +if (typeof reportCompare === "function") + reportCompare(true, true); + +print("All tests passed!"); |