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);