blob: 4f44d188b5aac12e932e6d55b250802622a3cc2e [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.
//-------------------------------------------------------------------------------------------------------
function write(v) { WScript.Echo(v + ""); }
var groups = {};
function Assert(condition, category)
{
if (!groups[category]) {
groups[category] = 1;
} else {
groups[category]++;
}
if (!condition) {
write(category + " test " + groups[category] + " failed");
} else {
write(category + " test " + groups[category] + " passed");
}
}
write("regex test1");
var re = /a/;
var str = new String("abcda");
if (re.test(str)) {
write(" regex.test pass");
}
else {
write(" regex.test fail");
}
if (str.match(re)) {
write(" string.match pass");
}
else {
write(" string.match fail");
}
var array = re.exec(str);
write(" string.exec : " + array);
var s = "";
var a = s.split(/\s+/);
write("a.length : " + a.length);
write("a[0]:" + a[0]);
var reTemp = /abc/i;
var re = new RegExp(reTemp, "g");
var tmp = "abcdef".replace(re, "");
Assert(re.lastIndex == 0, "lastIndex");
var re = new RegExp(/abc/i, "g");
var tmp = "abcdef".match(re);
Assert(re.lastIndex == 0, "lastIndex");
var re = new RegExp(/abc/g);
re.exec("abcdef");
Assert(re.lastIndex == 3, "lastIndex");
var re = /abc/;
re.exec("abcdef");
Assert(re.lastIndex == 0, "lastIndex");
var re = new RegExp(/abc/g, "i");
Assert(re.global == false, "global");
Assert(re.ignoreCase == true, "ignoreCase");
var re = /abc/i;
var re1 = new RegExp(re, "gm");
Assert(re.global == false, "global");
Assert(re.multiline == false, "multiline");
Assert(re.ignoreCase == true, "ignoreCase");
Assert(re1.global == true, "global");
Assert(re1.multiline == true, "multiline");
Assert(re1.ignoreCase == false, "ignoreCase");
var exceptionThrown = false;
try
{
var re = new RegExp(/a/g, "ab");
}
catch (ex)
{
exceptionThrown = true;
}
Assert(exceptionThrown, "invalid flags");
var re = /(ab)/g
"abc ".match(re);
Assert(RegExp.$1 == "ab", "lastIndex");
var re = /test/;
var exceptionThrown = false;
try
{
re.lastIndex = { toString: function() { throw "an exception string"; } }
}
catch (ex)
{
exceptionThrown = true;
}
Assert(exceptionThrown == false, "lastIndex");
exceptionThrown = false;
try
{
Write("LastIndex is " + re.lastIndex);
}
catch (ex)
{
exceptionThrown = true;
}
Assert(exceptionThrown == true, "lastIndex");
function testsc(r, s) {
if (!r.test(s))
write("invalid interpretation of '" + r + "'");
}
testsc(/^\cA$/, "\x01");
testsc(/^[\cA]$/, "\x01");
testsc(/^\c1$/, "\\c1");
testsc(/^\c$/, "\\c");
testsc(/\c/, "\\c");
testsc(/^\c\1$/, "\\c\x01");
testsc(/\c/, "\\c");
testsc(/^[\c1]$/, "\x11");
testsc(/^[\c]$/, "c");
testsc(/^[\c]]$/, "c]");
testsc(/^[\c-e]+$/, "cde");
//Octal handling
testsc(/^\777$/, "\x3F7");
testsc(/^\777$/, "\777");
testsc(/^\170$/, "x");
//Octal handling test for values > 127
c=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];
//Negation of empty char set [^] test
write("aa".match(/([^])(\1)/));