blob: 083ad597464e475d5a1a63b51cf0d72ca15b376b [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
var tests = [
function (str)
{
// Can't optimize
return "<start> " + str + " <end>";
},
function(str, str2)
{
// Can't optimize because the first two might not be string
return str + str2 + " something";
},
function(str, str2)
{
// Can't optimize, side effect ordering
return str + " something " + str2;
},
function(str, str2)
{
// Can't optimize, side effect ordering
return str + (" something " + str2);
},
function(str)
{
return ("<start> " + str)
+ (str + " <end>");
},
function(str)
{
return "<start> " + str + str + (str += "<extra>") + " <end>";
},
function(str)
{
return "<start> " + str + str;
}
];
function test(func, str, str2)
{
WScript.Echo("------------------------------------------");
WScript.Echo(func(str, str2));
WScript.Echo(func(str, str2));
}
function alltest(str, str2)
{
WScript.Echo("==========================================");
WScript.Echo("Input : " + str + " | " + str2);
WScript.Echo("==========================================");
for (var i = 0; i < tests.length; i++)
{
test(tests[i], str, str2);
}
}
alltest("x");
alltest(12);
alltest(true);
function A() {};
function B() {};
A.prototype.toString = function() { WScript.Echo("A.toString"); return "A"; }
B.prototype.toString = function() { WScript.Echo("B.toString"); return "B"; }
alltest(new A(), new B());