1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/debug/Object-defineProperties-01.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,46 @@ 1.4 +// Debug.Object.prototype.defineProperties. 1.5 + 1.6 +var g = newGlobal(); 1.7 +var dbg = new Debugger; 1.8 +var gw = dbg.addDebuggee(g); 1.9 + 1.10 +var descProps = ['configurable', 'enumerable', 'writable', 'value', 'get', 'set']; 1.11 +function test(objexpr, descs) { 1.12 + g.eval("obj = (" + objexpr + ");"); 1.13 + var gobjw = gw.getOwnPropertyDescriptor("obj").value; 1.14 + gobjw.defineProperties(descs); 1.15 + 1.16 + var indirectEval = eval; 1.17 + var obj = indirectEval("(" + objexpr + ");"); 1.18 + Object.defineProperties(obj, descs); 1.19 + 1.20 + var ids = Object.keys(descs); 1.21 + for (var i = 0; i < ids.length; i++) { 1.22 + var actual = gobjw.getOwnPropertyDescriptor(ids[i]); 1.23 + var expected = Object.getOwnPropertyDescriptor(obj, ids[i]); 1.24 + assertEq(Object.getPrototypeOf(actual), Object.prototype); 1.25 + assertEq(actual.configurable, expected.configurable); 1.26 + assertEq(actual.enumerable, expected.enumerable); 1.27 + for (var j = 0; j < descProps; j++) { 1.28 + var prop = descProps[j]; 1.29 + assertEq(prop in actual, prop in expected); 1.30 + assertEq(actual[prop], expected[prop]); 1.31 + } 1.32 + } 1.33 +} 1.34 + 1.35 +test("{}", {}); 1.36 +test("/abc/", {}); 1.37 + 1.38 +g.eval("var aglobal = newGlobal('same-compartment');"); 1.39 +var aglobal = newGlobal('same-compartment'); 1.40 +test("aglobal", {}); 1.41 + 1.42 +var adescs = {a: {enumerable: true, writable: true, value: 0}}; 1.43 +test("{}", adescs); 1.44 +test("{a: 1}", adescs); 1.45 + 1.46 +var arrdescs = [{value: 'a'}, {value: 'b'}, , {value: 'd'}]; 1.47 +test("{}", arrdescs); 1.48 +test("[]", arrdescs); 1.49 +test("[0, 1, 2, 3]", arrdescs);