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

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:335e971b942b
1 // Debugger.prototype.onNewGlobalObject surfaces.
2
3 load(libdir + 'asserts.js');
4
5 var dbg = new Debugger;
6
7 function f() { }
8 function g() { }
9
10 assertEq(Object.getOwnPropertyDescriptor(dbg, 'onNewGlobalObject'), undefined);
11
12 var d = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(dbg), 'onNewGlobalObject');
13 assertEq(d.enumerable, false);
14 assertEq(d.configurable, true);
15 assertEq(typeof d.get, "function");
16 assertEq(typeof d.set, "function");
17
18 assertEq(dbg.onNewGlobalObject, undefined);
19
20 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = ''; }, TypeError);
21 assertEq(dbg.onNewGlobalObject, undefined);
22
23 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = false; }, TypeError);
24 assertEq(dbg.onNewGlobalObject, undefined);
25
26 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = 0; }, TypeError);
27 assertEq(dbg.onNewGlobalObject, undefined);
28
29 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = Math.PI; }, TypeError);
30 assertEq(dbg.onNewGlobalObject, undefined);
31
32 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = null; }, TypeError);
33 assertEq(dbg.onNewGlobalObject, undefined);
34
35 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = {}; }, TypeError);
36 assertEq(dbg.onNewGlobalObject, undefined);
37
38 // But any function, even a useless one, is okay. How fair is that?
39 dbg.onNewGlobalObject = f;
40 assertEq(dbg.onNewGlobalObject, f);
41
42 dbg.onNewGlobalObject = undefined;
43 assertEq(dbg.onNewGlobalObject, undefined);
44
45 var dbg2 = new Debugger;
46 assertEq(dbg.onNewGlobalObject, undefined);
47 assertEq(dbg2.onNewGlobalObject, undefined);
48
49 dbg.onNewGlobalObject = f;
50 assertEq(dbg.onNewGlobalObject, f);
51 assertEq(dbg2.onNewGlobalObject, undefined);
52
53 dbg2.onNewGlobalObject = g;
54 assertEq(dbg.onNewGlobalObject, f);
55 assertEq(dbg2.onNewGlobalObject, g);
56
57 dbg.onNewGlobalObject = undefined;
58 assertEq(dbg.onNewGlobalObject, undefined);
59 assertEq(dbg2.onNewGlobalObject, g);
60
61 // You shouldn't be able to apply the accessor to the prototype.
62 assertThrowsInstanceOf(function () {
63 Debugger.prototype.onNewGlobalObject = function () { };
64 }, TypeError);

mercurial