/* * 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!");