File: fwdref.t

package info (click to toggle)
libregexp-grammars-perl 1.058-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 1,328 kB
  • sloc: perl: 53,328; makefile: 2
file content (91 lines) | stat: -rw-r--r-- 2,581 bytes parent folder | download | duplicates (3)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
use 5.010;
use warnings;

use Test::More 'no_plan';

use Regexp::Grammars;

my $delimited         = qr{ <delim=([(/][*]|if|[][(){}<>?'"`]+)> <content=(.*?)> </delim> }xms;
my $delimited_cap     = qr{ <delim=([(/][*]|if|[][(){}<>?'"`]+)> <content=(.*?)> <rdel=/delim> }xms;
my $delimited_listcap = qr{ <delim=([(/][*]|if|[][(){}<>?'"`]+)> <content=(.*?)> <[rdel=/delim]> }xms;

no Regexp::Grammars;

while (my $spec = <DATA>) {
    next if $spec !~ /\S/;
    chomp $spec;
    my $spec_copy = $spec;
    my ($input, $expected_outcome) = split /\s*:\s*/, $spec;
    my ($ldelim, $content, $rdelim) = split /(xxx)/, $input;

    if ($expected_outcome eq 'succeed') {
        ok +($input =~ $delimited) => "Match of $input ${expected_outcome}ed";
        is $/{delim},   $ldelim  => "Captured delimiter";
        is $/{content}, $content => "Captured content";

        ok +($input =~ $delimited_cap) => "Match and capture of $input ${expected_outcome}ed";
        is $/{delim},   $ldelim  => "Captured delimiter";
        is $/{content}, $content => "Captured content";
        is $/{rdel},    $rdelim  => "Captured closer";

        ok +($input =~ $delimited_listcap) => "Match and list capture of $input ${expected_outcome}ed";
        is $/{delim},   $ldelim        => "Captured delimiter";
        is $/{content}, $content       => "Captured content";
        is_deeply $/{rdel}, [$rdelim]  => "Captured closer";
    }
    else {
        ok +($input !~ $delimited)         => "Match of $input ${expected_outcome}ed";
        ok +($input !~ $delimited_cap)     => "Match and capture of $input ${expected_outcome}ed";
        ok +($input !~ $delimited_listcap) => "Match and list of $input ${expected_outcome}ed";
    }
}


__DATA__
"xxx"         :succeed
`xxx'         :succeed
``xxx''       :succeed

'xxx"         :fail

{xxx}         :succeed
[xxx]         :succeed
<xxx>         :succeed
(xxx)         :succeed
?xxx?         :succeed

[[xxx]]       :succeed
{{{xxx}}}     :succeed
((((xxx))))   :succeed
<<xxx>>       :succeed
??xxx??       :succeed

}xxx{         :succeed
]xxx[         :succeed
)xxx(         :succeed
>xxx<         :succeed
?xxx?         :succeed

}}}xxx{{{     :succeed
]]xxx[[       :succeed
))))xxx((((   :succeed
>>xxx<<       :succeed
??xxx??       :succeed

({xxx})       :succeed
(*xxx*)       :succeed
/*xxx*/       :succeed
ifxxxfi       :succeed

``            :fail
'abc"         :fail

{xxx{         :fail
[xxx[         :fail
<xxx<         :fail
(xxx(         :fail

[[xxx[[       :fail
{{{xxx{{{     :fail
((((xxx((((   :fail
<<xxx<<       :fail