1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/bug730977-implement-jsop-delprop.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,51 @@ 1.4 + 1.5 +function makeThing(i) 1.6 +{ 1.7 + var thing = {}; 1.8 + thing.foo = i; 1.9 + thing.bar = "bar_" + i; 1.10 + Object.defineProperty(thing, 'baz', {'configurable':false, 'value':[i]}); 1.11 + return thing; 1.12 +} 1.13 +function makeArray(count) 1.14 +{ 1.15 + var arr = new Array(count); 1.16 + for(var i = 0; i < count; i++) { 1.17 + arr[i] = makeThing(i); 1.18 + } 1.19 + return arr; 1.20 +} 1.21 +function delBar(obj) 1.22 +{ 1.23 + assertEq(Object.getOwnPropertyDescriptor(obj, 'bar') === undefined, false); 1.24 + assertEq(delete obj.bar, true); 1.25 + assertEq(Object.getOwnPropertyDescriptor(obj, 'bar') === undefined, true); 1.26 +} 1.27 +function delBaz(obj) 1.28 +{ 1.29 + var s = delete obj.baz; 1.30 + assertEq(Object.getOwnPropertyDescriptor(obj, 'baz') === undefined, false); 1.31 + assertEq(delete obj.baz, false); 1.32 + assertEq(Object.getOwnPropertyDescriptor(obj, 'baz') === undefined, false); 1.33 +} 1.34 +function delNonexistentThingy(obj) 1.35 +{ 1.36 + assertEq(Object.getOwnPropertyDescriptor(obj, 'thingy') === undefined, true); 1.37 + assertEq(delete obj.thingy, true); 1.38 + assertEq(Object.getOwnPropertyDescriptor(obj, 'thingy') === undefined, true); 1.39 +} 1.40 +function testDelProp() 1.41 +{ 1.42 + var arr = makeArray(10000); 1.43 + for(var i = 0; i < 10000; i++) { 1.44 + var obj = arr[i]; 1.45 + assertEq(Object.getOwnPropertyDescriptor(obj, 'foo') === undefined, false); 1.46 + assertEq(delete obj.foo, true); 1.47 + assertEq(Object.getOwnPropertyDescriptor(obj, 'foo') === undefined, true); 1.48 + delBar(obj); 1.49 + delBaz(obj); 1.50 + delNonexistentThingy(obj); 1.51 + } 1.52 +} 1.53 + 1.54 +testDelProp();