| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | //jshint eqnull:truedefine(function () {    "use strict";    function assert (fn) {        try {            if (fn()) return;        } catch (ex) {            throw new Error("Error:\n" + ex + "in assertion:\n" + fn);        }        throw new Error("Assertion failed:\n" + fn);    }    assert(function () {        return !("hasOwnProperty" in Object.create(null));    });    assert(function () {        return Object.getPrototypeOf(Object.create(null)) === null;    });    assert(function () {        var p = {};        return Object.getPrototypeOf(Object.create(p)) === p;    });    assert(function () {        var p = {x: 4, y: 5}, q = {x: 6};        var r = Object.setPrototypeOf(q, p);        return r === q &&            q.x === 6 &&            q.y === 5;    });    // assert(function () {    //     return new Function("return this")().Object === Object;    // });    // assert(function () {    //     return Object.create(new Function("return this")()).Object === Object;    // });    assert(function () {        return typeof global !== "undefined";    });    assert(function () {        return global.Object === Object;    });    assert(function () {        return Object.create(global).Object === Object;    });    assert(function () {        return (function () {                return this;            }).apply(void 0) === void 0;    });    assert(function () {        return (function () {                return this;            }).apply(null) === null;    });    assert(function () {        return (function () {                return this;            }).apply(3) === 3;    });    assert(function () {        return (function () {                return this;            }).apply("foo") === "foo";    });    assert(function () {        return (function () {                return this;            }).apply(true) === true;    });    assert(function () {        var o = Object.freeze({});        try {            o.foo = "bar";        } catch (ex) {        }        return o.foo == null;    });    assert(function () {        return typeof Promise === "function";    });    assert(function () {        return typeof Promise.resolve === "function";    });    assert(function () {        return typeof Promise.reject === "function";    });    assert(function () {        return typeof new Promise(function () {            }).then === "function";    });});
 |