tests: AVM2 RegExp constructor and flags

This commit is contained in:
paq 2021-02-23 17:02:24 +09:00 committed by Mike Welsh
parent d866f73c5e
commit ae2de6315d
5 changed files with 140 additions and 0 deletions

View File

@ -527,6 +527,7 @@ swf_tests! {
(as3_movieclip_displayevents_timeline, "avm2/movieclip_displayevents_timeline", 5),
(as3_movieclip_displayevents_looping, "avm2/movieclip_displayevents_looping", 5),
(as3_movieclip_displayevents_dblhandler, "avm2/movieclip_displayevents_dblhandler", 4),
(as3_regexp_constr, "avm2/regexp_constr", 1),
}
// TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough.

View File

@ -0,0 +1,40 @@
package {
public class Test {
}
}
trace("// new RegExp();");
var re = new RegExp();
trace(re);
trace(re.source == "");
trace("dotall", re.dotall);
trace("extended", re.extended);
trace("global", re.global);
trace("ignoreCase", re.ignoreCase);
trace("multiline", re.multiline);
trace("");
function test(source:String, flags:String) {
trace("// new RegExp(\"" + source + "\", \"" + flags + "\");");
var re = new RegExp(source, flags);
trace(re);
trace(re.source == source);
trace("dotall", re.dotall);
trace("extended", re.extended);
trace("global", re.global);
trace("ignoreCase", re.ignoreCase);
trace("multiline", re.multiline);
trace("");
}
test("empty flags", "");
test("dotall flag", "s");
test("extended flag", "x");
test("global flag", "g");
test("ignoreCase flag", "i");
test("multiline flag", "m");
test("all flags", "sxgim");
test("invalid flags", "|%?-/.あa");
test("uppercase flags", "SXGIM");
test("duplicate flags", "ssgg");

View File

@ -0,0 +1,99 @@
// new RegExp();
//
true
dotall false
extended false
global false
ignoreCase false
multiline false
// new RegExp("empty flags", "");
/empty flags/
true
dotall false
extended false
global false
ignoreCase false
multiline false
// new RegExp("dotall flag", "s");
/dotall flag/s
true
dotall true
extended false
global false
ignoreCase false
multiline false
// new RegExp("extended flag", "x");
/extended flag/x
true
dotall false
extended true
global false
ignoreCase false
multiline false
// new RegExp("global flag", "g");
/global flag/g
true
dotall false
extended false
global true
ignoreCase false
multiline false
// new RegExp("ignoreCase flag", "i");
/ignoreCase flag/i
true
dotall false
extended false
global false
ignoreCase true
multiline false
// new RegExp("multiline flag", "m");
/multiline flag/m
true
dotall false
extended false
global false
ignoreCase false
multiline true
// new RegExp("all flags", "sxgim");
/all flags/gimsx
true
dotall true
extended true
global true
ignoreCase true
multiline true
// new RegExp("invalid flags", "|%?-/.あa");
/invalid flags/
true
dotall false
extended false
global false
ignoreCase false
multiline false
// new RegExp("uppercase flags", "SXGIM");
/uppercase flags/
true
dotall false
extended false
global false
ignoreCase false
multiline false
// new RegExp("duplicate flags", "ssgg");
/duplicate flags/gs
true
dotall true
extended false
global true
ignoreCase false
multiline false

Binary file not shown.

Binary file not shown.