]> git.vpit.fr Git - perl/modules/Regexp-Wildcards.git/blob - t/12-brackets.t
Update .gitignore
[perl/modules/Regexp-Wildcards.git] / t / 12-brackets.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 27;
7
8 use Regexp::Wildcards qw/wc2re_jokers wc2re_sql wc2re_unix wc2re_win32/;
9
10 ok(wc2re_jokers('a{b\\\\,c\\\\}d') eq 'a\\{b\\\\\\,c\\\\\\}d', 'wc2re_jokers');
11
12 ok(wc2re_sql('a{b\\\\,c\\\\}d') eq 'a\\{b\\\\\\,c\\\\\\}d', 'wc2re_sql');
13
14 ok(wc2re_win32('a{b\\\\,c\\\\}d') eq '(?:a\\{b\\\\|c\\\\\\}d)', 'wc2re_win32');
15
16 ok(wc2re_unix('{}') eq '(?:)', 'empty brackets');
17 ok(wc2re_unix('{a}') eq '(?:a)', 'brackets 1');
18 ok(wc2re_unix('{a,b}') eq '(?:a|b)', 'brackets 2');
19 ok(wc2re_unix('{a,b,c}') eq '(?:a|b|c)', 'brackets 3');
20
21 ok(wc2re_unix('a{b,c}d') eq 'a(?:b|c)d',
22    '1 bracketed block');
23 ok(wc2re_unix('a{b,c}d{e,,f}') eq 'a(?:b|c)d(?:e||f)',
24    '2 bracketed blocks');
25 ok(wc2re_unix('a{b,c}d{e,,f}{g,h,}') eq 'a(?:b|c)d(?:e||f)(?:g|h|)',
26    '3 bracketed blocks');
27
28 ok(wc2re_unix('{a{b}}') eq '(?:a(?:b))',
29    '2 nested bracketed blocks 1');
30 ok(wc2re_unix('{a,{b},c}') eq '(?:a|(?:b)|c)',
31    '2 nested bracketed blocks 2');
32 ok(wc2re_unix('{a,{b{d}e},c}') eq '(?:a|(?:b(?:d)e)|c)',
33    '3 nested bracketed blocks');
34 ok(wc2re_unix('{a,{b{d{}}e,f,,},c}') eq '(?:a|(?:b(?:d(?:))e|f||)|c)',
35    '4 nested bracketed blocks');
36 ok(wc2re_unix('{a,{b{d{}}e,f,,},c}{,g{{}h,i}}') eq '(?:a|(?:b(?:d(?:))e|f||)|c)(?:|g(?:(?:)h|i))',
37    '4+3 nested bracketed blocks');
38
39 ok(wc2re_unix('\\{\\\\}') eq '\\{\\\\\\}',
40    'escaping brackets');
41 ok(wc2re_unix('\\{a,b,c\\\\\\}') eq '\\{a\\,b\\,c\\\\\\}',
42    'escaping commas 1');
43 ok(wc2re_unix('\\{a\\\\,b\\,c}') eq '\\{a\\\\\\,b\\,c\\}',
44    'escaping commas 2');
45 ok(wc2re_unix('\\{a\\\\,b\\,c\\}') eq '\\{a\\\\\\,b\\,c\\}',
46    'escaping commas 3');
47 ok(wc2re_unix('\\{a\\\\,b\\,c\\\\}') eq '\\{a\\\\\\,b\\,c\\\\\\}',
48    'escaping brackets and commas');
49
50 ok(wc2re_unix('{a\\},b\\{,c}') eq '(?:a\\}|b\\{|c)',
51    'overlapping brackets');
52 ok(wc2re_unix('{a\\{b,c}d,e}') eq '(?:a\\{b|c)d\\,e\\}',
53    'partial unbalanced catching 1');
54 ok(wc2re_unix('{a\\{\\\\}b,c\\\\}') eq '(?:a\\{\\\\)b\\,c\\\\\\}',
55    'partial unbalanced catching 2');
56 ok(wc2re_unix('{a{b,c\\}d,e}') eq '\\{a\\{b\\,c\\}d\\,e\\}',
57    'no partial unbalanced catching');
58 ok(wc2re_unix('{a,\\{,\\},b}') eq '(?:a|\\{|\\}|b)',
59    'substituting commas 1');
60 ok(wc2re_unix('{a,\\{d,e,,\\}b,c}') eq '(?:a|\\{d|e||\\}b|c)',
61    'substituting commas 2');
62 ok(wc2re_unix('{a,\\{d,e,,\\}b,c}\\\\{f,g,h,i}') eq '(?:a|\\{d|e||\\}b|c)\\\\(?:f|g|h|i)',
63    'handling the rest');