111 lines
2.3 KiB
HTML
111 lines
2.3 KiB
HTML
<p>
|
|
This test verifies that property caching behaves correctly in the face of deleted
|
|
properties. If the test passes, you'll see a series of PASS messages below.
|
|
</p>
|
|
|
|
<pre id="console"></pre>
|
|
|
|
<script>
|
|
(function() {
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
function log(s)
|
|
{
|
|
if (this.document)
|
|
document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
|
|
else
|
|
print(s + "\n");
|
|
}
|
|
|
|
function shouldBe(a, aDescription, b)
|
|
{
|
|
if (a === b) {
|
|
log("PASS: " + aDescription + " should be " + b + " and is.");
|
|
} else {
|
|
log("FAIL: " + aDescription + " should be " + b + " but instead is " + a + ".");
|
|
}
|
|
}
|
|
|
|
Array.equal = function equal(a, b)
|
|
{
|
|
if (a.length != b.length)
|
|
return false;
|
|
for (var i = 0; i < a.length; ++i)
|
|
if (a[i] != b[i])
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
var expectedProperties = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
|
|
|
|
function getProperties(o)
|
|
{
|
|
return [
|
|
o.p1,
|
|
o.p2,
|
|
o.p3,
|
|
o.p4,
|
|
o.p5,
|
|
o.p6,
|
|
o.p7,
|
|
o.p8,
|
|
o.p9,
|
|
o.p10
|
|
];
|
|
}
|
|
|
|
function addProperties(o)
|
|
{
|
|
o.p1 = 1;
|
|
o.p2 = 2;
|
|
o.p3 = 3;
|
|
o.p4 = 4;
|
|
o.p5 = 5;
|
|
o.p6 = 6;
|
|
o.p7 = 7;
|
|
o.p8 = 8;
|
|
o.p9 = 9;
|
|
o.p10 = 10;
|
|
}
|
|
|
|
function removeProperties(o)
|
|
{
|
|
delete o.p10;
|
|
delete o.p9;
|
|
delete o.p8;
|
|
delete o.p7;
|
|
delete o.p6;
|
|
delete o.p5;
|
|
delete o.p4;
|
|
delete o.p3;
|
|
delete o.p2;
|
|
}
|
|
|
|
function makeO()
|
|
{
|
|
var o = { };
|
|
addProperties(o);
|
|
removeProperties(o);
|
|
addProperties(o);
|
|
return o;
|
|
}
|
|
|
|
var o;
|
|
var properties;
|
|
|
|
for (var i = 0; i < 3; ++i) {
|
|
o = makeO();
|
|
properties = getProperties(o);
|
|
shouldBe(Array.equal(properties, expectedProperties), "Array.equal(properties, expectedProperties)", true);
|
|
}
|
|
|
|
o = { x: 0, y: 0, z: 0 };
|
|
delete o.z;
|
|
for (var i = 0; i < 3; ++i) {
|
|
o.x = 1;
|
|
shouldBe(o.x, "o.x", 1);
|
|
}
|
|
})();
|
|
</script>
|