12 use re qw(is_regexp regexp_pattern
13 regname regnames regnames_count);
15 use feature 'unicode_strings'; # Force 'u' pat mod
17 no feature 'unicode_strings';
20 ok(is_regexp($qr),'is_regexp(REGEXP ref)');
21 ok(is_regexp($rx),'is_regexp(REGEXP)');
22 ok(!is_regexp(''),'is_regexp("")');
24 is((regexp_pattern($qr))[0],'foo','regexp_pattern[0] (ref)');
25 is((regexp_pattern($qr))[1],'uip','regexp_pattern[1] (ref)');
26 is(regexp_pattern($qr),'(?^upi:foo)','scalar regexp_pattern (ref)');
28 is((regexp_pattern($rx))[0],'foo','regexp_pattern[0] (bare REGEXP)');
29 is((regexp_pattern($rx))[1],'uip','regexp_pattern[1] (bare REGEXP)');
30 is(regexp_pattern($rx),'(?^upi:foo)', 'scalar regexp_pattern (bare REGEXP)');
32 ok(!regexp_pattern(''),'!regexp_pattern("")');
35 if ('1234'=~/(?:(?<A>\d)|(?<C>!))(?<B>\d)(?<A>\d)(?<B>\d)/){
36 my @names = sort +regnames();
37 is("@names","A B","regnames");
38 @names = sort +regnames(0);
39 is("@names","A B","regnames");
40 my $names = regnames();
41 is($names, "B", "regnames in scalar context");
42 @names = sort +regnames(1);
43 is("@names","A B C","regnames");
44 is(join("", @{regname("A",1)}),"13");
45 is(join("", @{regname("B",1)}),"24");
47 if ('foobar'=~/(?<foo>foo)(?<bar>bar)/) {
48 is(regnames_count(),2);
53 is(regnames_count(),3);
56 { # Keep these tests last, as whole script will be interrupted if times out
57 # Bug #72998; this can loop
59 eval '"\x{100}\x{FB00}" =~ /\x{100}\N{U+66}+/i';
62 # Bug #78058; this can loop
64 no warnings; # Because the 8 may be warned on
66 pass("qr/\18/ didn't loop");
69 # New tests above this line, don't forget to update the test count below!
70 BEGIN { plan tests => 20 }