xref: /openbsd-src/gnu/usr.bin/perl/ext/re/t/re_funcs.t (revision a28daedfc357b214be5c701aa8ba8adb29a7f1c2)
1#!./perl
2
3BEGIN {
4	chdir 't' if -d 't';
5	@INC = '../lib';
6	require Config;
7	if (($Config::Config{'extensions'} !~ /\bre\b/) ){
8        	print "1..0 # Skip -- Perl configured without re module\n";
9		exit 0;
10	}
11}
12
13use strict;
14
15use Test::More; # test count at bottom of file
16use re qw(is_regexp regexp_pattern regmust
17          regname regnames regnames_count);
18{
19    my $qr=qr/foo/pi;
20    ok(is_regexp($qr),'is_regexp($qr)');
21    ok(!is_regexp(''),'is_regexp("")');
22    is((regexp_pattern($qr))[0],'foo','regexp_pattern[0]');
23    is((regexp_pattern($qr))[1],'ip','regexp_pattern[1]');
24    is(regexp_pattern($qr),'(?pi-xsm:foo)','scalar regexp_pattern');
25    ok(!regexp_pattern(''),'!regexp_pattern("")');
26}
27{
28    my $qr=qr/here .* there/x;
29    my ($anchored,$floating)=regmust($qr);
30    is($anchored,'here',"Regmust anchored - qr//");
31    is($floating,'there',"Regmust floating - qr//");
32    my $foo='blah';
33    ($anchored,$floating)=regmust($foo);
34    is($anchored,undef,"Regmust anchored - non ref");
35    is($floating,undef,"Regmust anchored - non ref");
36    my $bar=['blah'];
37    ($anchored,$floating)=regmust($foo);
38    is($anchored,undef,"Regmust anchored - ref");
39    is($floating,undef,"Regmust anchored - ref");
40}
41
42if ('1234'=~/(?:(?<A>\d)|(?<C>!))(?<B>\d)(?<A>\d)(?<B>\d)/){
43    my @names = sort +regnames();
44    is("@names","A B","regnames");
45    my @names = sort +regnames(0);
46    is("@names","A B","regnames");
47    my $names = regnames();
48    is($names, "B", "regnames in scalar context");
49    @names = sort +regnames(1);
50    is("@names","A B C","regnames");
51    is(join("", @{regname("A",1)}),"13");
52    is(join("", @{regname("B",1)}),"24");
53    {
54        if ('foobar'=~/(?<foo>foo)(?<bar>bar)/) {
55            is(regnames_count(),2);
56        } else {
57            ok(0); ok(0);
58        }
59    }
60    is(regnames_count(),3);
61}
62# New tests above this line, don't forget to update the test count below!
63use Test::More tests => 20;
64# No tests here!
65