//------------------------------------------------------------------------------------------------------- | |
// Copyright (C) Microsoft. All rights reserved. | |
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
//------------------------------------------------------------------------------------------------------- | |
function createObject() | |
{ | |
var obj = new Object(); | |
obj.a = 1; | |
obj.b = 2; | |
obj.c = 3; | |
obj.d = 4; | |
return obj; | |
} | |
function createObject2() | |
{ | |
var obj = new Object(); | |
obj.e = 1; | |
obj.b = 2; | |
obj.c = 3; | |
obj.d = 4; | |
return obj; | |
} | |
var testnumber = 1; | |
// Test initial cache data population | |
WScript.Echo("test " + testnumber++); | |
var obj = createObject(); | |
for (var i in obj) | |
{ | |
WScript.Echo(i + " = " + obj[i]); | |
} | |
// Test using cached data | |
WScript.Echo("test " + testnumber++); | |
var obj = createObject(); | |
for (var i in obj) | |
{ | |
WScript.Echo(i + " = " + obj[i]); | |
} | |
// Test property delete | |
WScript.Echo("test " + testnumber++); | |
var c = 0; | |
var obj = createObject(); | |
for (var i in obj) | |
{ | |
c++; | |
WScript.Echo(i + " = " + obj[i]); | |
if (c == 2) | |
{ | |
delete obj.d; | |
} | |
} | |
// Test property delete and add back | |
WScript.Echo("test " + testnumber++); | |
var c = 0; | |
var obj = createObject(); | |
for (var i in obj) | |
{ | |
c++; | |
WScript.Echo(i + " = " + obj[i]); | |
if (c == 2) | |
{ | |
delete obj.d; | |
} | |
else if (c == 3) | |
{ | |
obj.d = 5; | |
} | |
} | |
// Test two for in enumerator simultaneously updating the enumerator data cache | |
WScript.Echo("test " + testnumber++); | |
var obj = createObject2(); | |
for (var i in obj) | |
{ | |
var c = 0; | |
for (var j in obj) | |
{ | |
WScript.Echo(i + "," + j); | |
if (c == 1) | |
{ | |
break; | |
} | |
if (i == j) | |
{ | |
c = 1; | |
} | |
} | |
} |