blob: 8c7356448df75db95179a5acda15670f21a159a6 [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.
//-------------------------------------------------------------------------------------------------------
WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
var x = WScript.LoadScriptFile("crossContext_remoteContext.js", "samethread");
var tests = {
test01: {
name: "Make sure when called with -nonative, marshaling of results is correct (Win8 628808)",
body: function() {
// Ñall this with -nonative
// Win8 628808: the following cases used to cause an assertion.
var str = "this is a sting";
var result = str.match(x.re);
var result = str.replace(x.re, null);
var result = str.split(x.re, 1);
var result = str.search(x.re);
var result = x.str.match(x.re);
var result = x.str.replace(x.re, null);
var result = x.str.split(x.re, 1);
var result = x.str.search(x.re);
var result = x.strObject.match(x.re);
var result = x.strObject.replace(x.re, null);
var result = x.strObject.split(x.re, 1);
var result = x.strObject.search(x.re);
var result = String.prototype.replace.call(x.strObject, /forceNoMatch/, "");
// The following cases are not impacted by Win8 628808, but it's worth verifying them for regressions in RegexHelper
var result = x.str.replace(x.str, "I");
var result = x.re.exec(x.str);
var result = x.str.split(x.str, 1);
var result = x.strObject.replace(x.strObject, "I");
var result = x.re.exec(x.strObject);
var result = x.strObject.split(x.strObject, 1);
}
},
test02: {
name: "lastIndex behavior",
body: function() {
x.reg.exec("_this_");
assert.areEqual(5, x.reg.lastIndex, "wrong x.reg.lastIndex");
}
},
test03: {
name: "Updating $1, $2,.. behavior",
body: function() {
// Disabled for IE9-compat mode due to Win8 xxxxxxx.
// TODO: re-enable when the bug is fixed.
if (helpers.isVersion10OrLater) {
"this".match(x.rep);
assert.areEqual("t", RegExp.$1, "RegExp.$1 in local context wasn't updated to the capture group");
}
}
},
test04: {
name: "Check in which context the results are created",
body: function() {
var result = "this".match(x.re);
var expected = helpers.isVersion10OrLater ? Array : x.Array;
assert.areEqual(expected, result.constructor, "The result should be created in local context");
}
},
}
testRunner.run(tests);