js/src/jit-test/tests/debug/Debugger-findScripts-09.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-findScripts-09.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,45 @@
     1.4 +// Passing bad query properties to Debugger.prototype.findScripts throws.
     1.5 +load(libdir + 'asserts.js');
     1.6 +
     1.7 +var dbg = new Debugger();
     1.8 +var g = newGlobal();
     1.9 +assertEq(dbg.findScripts().length, 0);
    1.10 +assertEq(dbg.findScripts({}).length, 0);
    1.11 +
    1.12 +assertEq(dbg.findScripts({global:g}).length, 0);
    1.13 +assertThrowsInstanceOf(function () { dbg.findScripts({global:null}); }, TypeError);
    1.14 +assertThrowsInstanceOf(function () { dbg.findScripts({global:true}); }, TypeError);
    1.15 +assertThrowsInstanceOf(function () { dbg.findScripts({global:4}); }, TypeError);
    1.16 +assertThrowsInstanceOf(function () { dbg.findScripts({global:"I must have fruit!"}); }, TypeError);
    1.17 +
    1.18 +assertEq(dbg.findScripts({url:""}).length, 0);
    1.19 +assertThrowsInstanceOf(function () { dbg.findScripts({url:null}); }, TypeError);
    1.20 +assertThrowsInstanceOf(function () { dbg.findScripts({url:true}); }, TypeError);
    1.21 +assertThrowsInstanceOf(function () { dbg.findScripts({url:4}); }, TypeError);
    1.22 +assertThrowsInstanceOf(function () { dbg.findScripts({url:{}}); }, TypeError);
    1.23 +
    1.24 +assertEq(dbg.findScripts({url:"", line:1}).length, 0);
    1.25 +assertEq(dbg.findScripts({url:"", line:Math.sqrt(4)}).length, 0);
    1.26 +
    1.27 +// A 'line' property without a 'url' property is verboten.
    1.28 +assertThrowsInstanceOf(function () { dbg.findScripts({line:1}); }, TypeError);
    1.29 +
    1.30 +assertThrowsInstanceOf(function () { dbg.findScripts({url:"",line:null}); }, TypeError);
    1.31 +assertThrowsInstanceOf(function () { dbg.findScripts({url:"",line:{}}); }, TypeError);
    1.32 +assertThrowsInstanceOf(function () { dbg.findScripts({url:"",line:true}); }, TypeError);
    1.33 +assertThrowsInstanceOf(function () { dbg.findScripts({url:"",line:""}); }, TypeError);
    1.34 +assertThrowsInstanceOf(function () { dbg.findScripts({url:"",line:0}); }, TypeError);
    1.35 +assertThrowsInstanceOf(function () { dbg.findScripts({url:"",line:-1}); }, TypeError);
    1.36 +assertThrowsInstanceOf(function () { dbg.findScripts({url:"",line:1.5}); }, TypeError);
    1.37 +
    1.38 +// Values of any type for 'innermost' are accepted.
    1.39 +assertEq(dbg.findScripts({url:"", line:1, innermost:true}).length, 0);
    1.40 +assertEq(dbg.findScripts({url:"", line:1, innermost:1}).length, 0);
    1.41 +assertEq(dbg.findScripts({url:"", line:1, innermost:"yes"}).length, 0);
    1.42 +assertEq(dbg.findScripts({url:"", line:1, innermost:{}}).length, 0);
    1.43 +assertEq(dbg.findScripts({url:"", line:1, innermost:[]}).length, 0);
    1.44 +
    1.45 +// An 'innermost' property without 'url' and 'line' properties is verboten.
    1.46 +assertThrowsInstanceOf(function () { dbg.findScripts({innermost:true}); }, TypeError);
    1.47 +assertThrowsInstanceOf(function () { dbg.findScripts({innermost:true, line:1}); }, TypeError);
    1.48 +assertThrowsInstanceOf(function () { dbg.findScripts({innermost:true, url:"foo"}); }, TypeError);

mercurial