js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-01.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-01.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,64 @@
     1.4 +// Debugger.prototype.onNewGlobalObject surfaces.
     1.5 +
     1.6 +load(libdir + 'asserts.js');
     1.7 +
     1.8 +var dbg = new Debugger;
     1.9 +
    1.10 +function f() { }
    1.11 +function g() { }
    1.12 +
    1.13 +assertEq(Object.getOwnPropertyDescriptor(dbg, 'onNewGlobalObject'), undefined);
    1.14 +
    1.15 +var d = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(dbg), 'onNewGlobalObject');
    1.16 +assertEq(d.enumerable, false);
    1.17 +assertEq(d.configurable, true);
    1.18 +assertEq(typeof d.get, "function");
    1.19 +assertEq(typeof d.set, "function");
    1.20 +
    1.21 +assertEq(dbg.onNewGlobalObject, undefined);
    1.22 +
    1.23 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = ''; }, TypeError);
    1.24 +assertEq(dbg.onNewGlobalObject, undefined);
    1.25 +
    1.26 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = false; }, TypeError);
    1.27 +assertEq(dbg.onNewGlobalObject, undefined);
    1.28 +
    1.29 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = 0; }, TypeError);
    1.30 +assertEq(dbg.onNewGlobalObject, undefined);
    1.31 +
    1.32 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = Math.PI; }, TypeError);
    1.33 +assertEq(dbg.onNewGlobalObject, undefined);
    1.34 +
    1.35 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = null; }, TypeError);
    1.36 +assertEq(dbg.onNewGlobalObject, undefined);
    1.37 +
    1.38 +assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = {}; }, TypeError);
    1.39 +assertEq(dbg.onNewGlobalObject, undefined);
    1.40 +
    1.41 +// But any function, even a useless one, is okay. How fair is that?
    1.42 +dbg.onNewGlobalObject = f;
    1.43 +assertEq(dbg.onNewGlobalObject, f);
    1.44 +
    1.45 +dbg.onNewGlobalObject = undefined;
    1.46 +assertEq(dbg.onNewGlobalObject, undefined);
    1.47 +
    1.48 +var dbg2 = new Debugger;
    1.49 +assertEq(dbg.onNewGlobalObject, undefined);
    1.50 +assertEq(dbg2.onNewGlobalObject, undefined);
    1.51 +
    1.52 +dbg.onNewGlobalObject = f;
    1.53 +assertEq(dbg.onNewGlobalObject, f);
    1.54 +assertEq(dbg2.onNewGlobalObject, undefined);
    1.55 +
    1.56 +dbg2.onNewGlobalObject = g;
    1.57 +assertEq(dbg.onNewGlobalObject, f);
    1.58 +assertEq(dbg2.onNewGlobalObject, g);
    1.59 +
    1.60 +dbg.onNewGlobalObject = undefined;
    1.61 +assertEq(dbg.onNewGlobalObject, undefined);
    1.62 +assertEq(dbg2.onNewGlobalObject, g);
    1.63 +
    1.64 +// You shouldn't be able to apply the accessor to the prototype.
    1.65 +assertThrowsInstanceOf(function () {
    1.66 +                         Debugger.prototype.onNewGlobalObject = function () { };
    1.67 +                       }, TypeError);

mercurial