171 lines
5.5 KiB
JavaScript
171 lines
5.5 KiB
JavaScript
/*
|
|
* Copyright 2008 Jacek Caban for CodeWeavers
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
|
|
var m;
|
|
|
|
m = "abcabc".match(/ca/);
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 1, "m.length is not 1");
|
|
ok(m["0"] === "ca", "m[0] is not \"ca\"");
|
|
|
|
m = "abcabc".match(/ab/);
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 1, "m.length is not 1");
|
|
ok(m["0"] === "ab", "m[0] is not \"ab\"");
|
|
|
|
m = "abcabc".match(/ab/g);
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 2, "m.length is not 1");
|
|
ok(m["0"] === "ab", "m[0] is not \"ab\"");
|
|
ok(m["1"] === "ab", "m[1] is not \"ab\"");
|
|
|
|
m = "abcabc".match(/Ab/g);
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m === null, "m is not null");
|
|
|
|
m = "abcabc".match(/Ab/gi);
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 2, "m.length is not 1");
|
|
ok(m["0"] === "ab", "m[0] is not \"ab\"");
|
|
ok(m["1"] === "ab", "m[1] is not \"ab\"");
|
|
|
|
m = "aaabcabc".match(/a+b/g);
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 2, "m.length is not 2");
|
|
ok(m["0"] === "aaab", "m[0] is not \"ab\"");
|
|
ok(m["1"] === "ab", "m[1] is not \"ab\"");
|
|
|
|
m = "aaa\\\\cabc".match(/\\/g);
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 2, "m.length is not 2");
|
|
ok(m["0"] === "\\", "m[0] is not \"\\\"");
|
|
ok(m["1"] === "\\", "m[1] is not \"\\\"");
|
|
|
|
m = "abcabc".match(new RegExp("ab"));
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 1, "m.length is not 1");
|
|
ok(m["0"] === "ab", "m[0] is not \"ab\"");
|
|
|
|
m = "abcabc".match(new RegExp("ab","g"));
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 2, "m.length is not 1");
|
|
ok(m["0"] === "ab", "m[0] is not \"ab\"");
|
|
ok(m["1"] === "ab", "m[1] is not \"ab\"");
|
|
|
|
m = "abcabc".match(new RegExp(/ab/g));
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 2, "m.length is not 1");
|
|
ok(m["0"] === "ab", "m[0] is not \"ab\"");
|
|
ok(m["1"] === "ab", "m[1] is not \"ab\"");
|
|
|
|
m = "abcabc".match(new RegExp("ab","g", "test"));
|
|
ok(typeof(m) === "object", "typeof m is not object");
|
|
ok(m.length === 2, "m.length is not 1");
|
|
ok(m["0"] === "ab", "m[0] is not \"ab\"");
|
|
ok(m["1"] === "ab", "m[1] is not \"ab\"");
|
|
|
|
r = "- [test] -".replace(/\[([^\[]+)\]/g, "success");
|
|
ok(r === "- success -", "r = " + r + " expected '- success -'");
|
|
|
|
r = "[test] [test]".replace(/\[([^\[]+)\]/g, "aa");
|
|
ok(r === "aa aa", "r = " + r + "aa aa");
|
|
|
|
r = "[test] [test]".replace(/\[([^\[]+)\]/, "aa");
|
|
ok(r === "aa [test]", "r = " + r + " expected 'aa [test]'");
|
|
|
|
r = "- [test] -".replace(/\[([^\[]+)\]/g);
|
|
ok(r === "- undefined -", "r = " + r + " expected '- undefined -'");
|
|
|
|
r = "- [test] -".replace(/\[([^\[]+)\]/g, true);
|
|
ok(r === "- true -", "r = " + r + " expected '- true -'");
|
|
|
|
r = "- [test] -".replace(/\[([^\[]+)\]/g, true, "test");
|
|
ok(r === "- true -", "r = " + r + " expected '- true -'");
|
|
|
|
var tmp = 0;
|
|
|
|
function replaceFunc1(m, off, str) {
|
|
ok(arguments.length === 3, "arguments.length = " + arguments.length);
|
|
|
|
switch(tmp) {
|
|
case 0:
|
|
ok(m === "[test1]", "m = " + m + " expected [test1]");
|
|
ok(off === 0, "off = " + off + " expected 0");
|
|
break;
|
|
case 1:
|
|
ok(m === "[test2]", "m = " + m + " expected [test2]");
|
|
ok(off === 8, "off = " + off + " expected 8");
|
|
break;
|
|
default:
|
|
ok(false, "unexpected call");
|
|
}
|
|
|
|
ok(str === "[test1] [test2]", "str = " + arguments[3]);
|
|
return "r" + tmp++;
|
|
}
|
|
|
|
r = "[test1] [test2]".replace(/\[[^\[]+\]/g, replaceFunc1);
|
|
ok(r === "r0 r1", "r = " + r + " expected 'r0 r1'");
|
|
|
|
tmp = 0;
|
|
|
|
function replaceFunc2(m, subm, off, str) {
|
|
ok(arguments.length === 4, "arguments.length = " + arguments.length);
|
|
|
|
switch(tmp) {
|
|
case 0:
|
|
ok(subm === "test1", "subm = " + subm);
|
|
ok(m === "[test1]", "m = " + m + " expected [test1]");
|
|
ok(off === 0, "off = " + off + " expected 0");
|
|
break;
|
|
case 1:
|
|
ok(subm === "test2", "subm = " + subm);
|
|
ok(m === "[test2]", "m = " + m + " expected [test2]");
|
|
ok(off === 8, "off = " + off + " expected 8");
|
|
break;
|
|
default:
|
|
ok(false, "unexpected call");
|
|
}
|
|
|
|
ok(str === "[test1] [test2]", "str = " + arguments[3]);
|
|
return "r" + tmp++;
|
|
}
|
|
|
|
r = "[test1] [test2]".replace(/\[([^\[]+)\]/g, replaceFunc2);
|
|
ok(r === "r0 r1", "r = '" + r + "' expected 'r0 r1'");
|
|
|
|
r = "1,,2,3".split(/,+/g);
|
|
ok(r.length === 3, "r.length = " + r.length);
|
|
ok(r[0] === "1", "r[0] = " + r[0]);
|
|
ok(r[1] === "2", "r[1] = " + r[1]);
|
|
ok(r[2] === "3", "r[2] = " + r[2]);
|
|
|
|
r = "1,,2,3".split(/,+/);
|
|
ok(r.length === 3, "r.length = " + r.length);
|
|
ok(r[0] === "1", "r[0] = " + r[0]);
|
|
ok(r[1] === "2", "r[1] = " + r[1]);
|
|
ok(r[2] === "3", "r[2] = " + r[2]);
|
|
|
|
r = "1,,2,".split(/,+/);
|
|
ok(r.length === 2, "r.length = " + r.length);
|
|
ok(r[0] === "1", "r[0] = " + r[0]);
|
|
ok(r[1] === "2", "r[1] = " + r[1]);
|
|
|
|
reportSuccess();
|