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