michael@0: // addDebuggee, hasDebuggee, and removeDebuggee all throw if presented with michael@0: // objects that are not valid global object designators. michael@0: michael@0: load(libdir + 'asserts.js'); michael@0: michael@0: var dbg = new Debugger; michael@0: michael@0: function check(bad) { michael@0: print("check(" + uneval(bad) + ")"); michael@0: assertThrowsInstanceOf(function () { dbg.addDebuggee(bad); }, TypeError); michael@0: assertEq(dbg.getDebuggees().length, 0); michael@0: assertThrowsInstanceOf(function () { dbg.hasDebuggee(bad); }, TypeError); michael@0: assertThrowsInstanceOf(function () { dbg.removeDebuggee(bad); }, TypeError); michael@0: } michael@0: michael@0: var g = newGlobal(); michael@0: check(g.Object()); michael@0: check(g.Object); michael@0: check(g.Function("")); michael@0: michael@0: // A Debugger.Object belonging to a different Debugger is not a valid way michael@0: // to designate a global, even if its referent is a global. michael@0: var g2 = newGlobal(); michael@0: var dbg2 = new Debugger; michael@0: var d2g2 = dbg2.addDebuggee(g2); michael@0: check(d2g2);