1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#!/usr/bin/perl
use strict;
use warnings;
no warnings 'syntax';
use 5.010;
use Test::Tester;
use Test::Regexp;
use t::Common;
while (<DATA>) {
chomp;
m {^\h* (?|"(?<subject>[^"]*)"|(?<subject>\S+))
\h+ (?|/(?<pattern>[^/]*)/|(?<pattern>\S+))
\h+ (?<match>(?i:[ymn01]))
\h+ (?<result>[PFS]+)
\h* (?:$|\#)}x or next;
my ($subject, $pattern, $match, $expected) =
@+ {qw [subject pattern match result]};
my $match_val = $match =~ /[ym1]/i;
my $match_res;
my ($premature, @results) = run_tests sub {
$match_res = match subject => $subject,
pattern => $pattern,
match => $match_val;
};
check results => \@results,
premature => $premature,
expected => $expected,
match => $match_val,
match_res => $match_res,
pattern => $pattern,
subject => $subject,
;
}
#
# Names in the __DATA__ section come from 'meta norse_mythology'.
#
__DATA__
Dagr .... y PPPP
Kvasir Kvasir y PPPP
Snotra \w+ y PPPP
Sjofn \w+ n F # It matches, so a no_match should fail
Borr Bo y PFSS # Match is only partial
Magni Sigyn y FSSS # Fail, then a skip
Andhrimnir Delling n P # Doesn't match, so a pass
Hlin .(.).. y PPFP # Sets a capture, so should fail
Od (?<l>.*) y PPFF # Sets a capture, so should fail
|