| //------------------------------------------------------------------------------------------------------- |
| // 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; |
| } |
| |
| } |
| } |