blob: 6f8dd259e13867aed5bf0ce2c569014222e0db61 [file]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
//
//NOTE: this may break if enumeration order policy is changed in Chakra but that doesn't mean we have a bug in TTD
//
var a = [11,22,33,44];
a.x = "a.x";
a.y = "a.y";
a.z = "a.z";
var d = [1];
var counter = 0;
WScript.SetTimeout(testFunction, 50);
/////////////////
function testFunction()
{
telemetryLog("Scenario:1 - Adding new array indexes while enumerating expandos", true);
for(var i in a)
{
if(i == "y")
{
a[5] = 55;
a[6] = 66;
}
telemetryLog(`Index:${i} Value:${a[i]}`, true);
}
telemetryLog("Scenario:2 - Adding new array expandos while enumerating array for second time", true);
for(var i in a)
{
if(i == "z")
{
a[7] = 77;
a[9] = 99;
}
if(i == "7")
{
a.xx = "a.xx";
a.yy = "a.yy";
}
telemetryLog(`Index:${i} Value:${a[i]}`, true);
}
telemetryLog("Scenario:3 - Adding new array expandos while enumerating Object for second time", true);
var b = [11,22,33,44];
b.x = "b.x";
b.y = "b.y";
b.z = "b.z";
for(var i in b)
{
if(i == "x")
{
b[5] = 55;
b[7] = 77;
}
if(i == "7")
{
b.xx = "b.xx";
b.yy = "b.yy";
}
if(i == "xx")
{
b[9] = 99;
b[10] = 1010;
}
if(i == "9")
{
b.zz = "b.zz";
}
telemetryLog(`Index:${i} Value:${b[i]}`, true);
}
telemetryLog("Scenario:3 - Adding new array expandos while enumerating Object for second time", true);
var b = [11,22,33,44];
b.x = "b.x";
b.y = "b.y";
b.z = "b.z";
for(var i in b)
{
if(i == "x")
{
b[5] = 55;
b[7] = 77;
}
if(i == "7")
{
b.xx = "b.xx";
b.yy = "b.yy";
}
if(i == "xx")
{
b[9] = 99;
b[10] = 1010;
}
if(i == "9")
{
b.zz = "b.zz";
}
telemetryLog(`Index:${i} Value:${b[i]}`, true);
}
telemetryLog("Scenario:4 - random additions", true);
for(var i in d)
{
if(counter == 25)
{
break;
}
if(counter%2 == 1)
{
d[counter*counter] = counter*counter;
}
else
{
d["x"+counter] = "d.x"+counter;
}
telemetryLog(`Index:${i} Value:${d[i]}`, true);
counter++;
}
emitTTDLog(ttdLogURI);
}