X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FRegexp-Wildcards.git;a=blobdiff_plain;f=t%2F12-brackets.t;h=ff8cf934480967dffda3195b84eef934965ed4b2;hp=a8da49e817e5961dcf693bd58f794cbe5d0c277e;hb=46111541589202352d6a6a665eb03fe24e3861a6;hpb=d3841a7816c3e170f292ced4a5818ab252574300 diff --git a/t/12-brackets.t b/t/12-brackets.t index a8da49e..ff8cf93 100644 --- a/t/12-brackets.t +++ b/t/12-brackets.t @@ -1,40 +1,58 @@ #!perl -T -use Test::More tests => 28; +use Test::More tests => 26; use Regexp::Wildcards qw/wc2re_jokers wc2re_unix wc2re_win32/; -ok(wc2re_jokers('a{b\\\\,c\\\\}d') eq 'a\\{b\\\\\\,c\\\\\\}d'); - -ok(wc2re_win32('a{b\\\\,c\\\\}d') eq '(?:a\\{b\\\\|c\\\\\\}d)'); - -ok(wc2re_unix('{}') eq '(?:)'); -ok(wc2re_unix('{a}') eq '(?:a)'); -ok(wc2re_unix('{a,b}') eq '(?:a|b)'); -ok(wc2re_unix('{a,b,c}') eq '(?:a|b|c)'); - -ok(wc2re_unix('a{b,c}d') eq 'a(?:b|c)d'); -ok(wc2re_unix('a{b,c}d{e,,f}') eq 'a(?:b|c)d(?:e||f)'); -ok(wc2re_unix('a{b,c}d{e,,f}{g,h,}') eq 'a(?:b|c)d(?:e||f)(?:g|h|)'); - -ok(wc2re_unix('{a{b}}') eq '(?:a(?:b))'); -ok(wc2re_unix('{a,{b},c}') eq '(?:a|(?:b)|c)'); -ok(wc2re_unix('{a,{b{d}e},c}') eq '(?:a|(?:b(?:d)e)|c)'); -ok(wc2re_unix('{a,{b{d{}}e,f,,},c}') eq '(?:a|(?:b(?:d(?:))e|f||)|c)'); -ok(wc2re_unix('{a,{b{d{}}e,f,,},c}{,g{{}h,i}}') eq '(?:a|(?:b(?:d(?:))e|f||)|c)(?:|g(?:(?:)h|i))'); - -ok(wc2re_unix('\\{\\\\}') eq '\\{\\\\\\}'); -ok((not defined wc2re_unix('\\{a,b,c\\\\\\}'))); -ok(wc2re_unix('\\{a\\\\\\,b\\,c}') eq '\\{a\\\\\\,b\\,c\\}'); -ok(wc2re_unix('\\{a\\\\\\,b\\,c\\}') eq '\\{a\\\\\\,b\\,c\\}'); -ok(wc2re_unix('\\{a\\\\\\,b\\,c\\\\}') eq '\\{a\\\\\\,b\\,c\\\\\\}'); - -ok(wc2re_unix('{a\\},b\\{,c}') eq '(?:a\\}|b\\{|c)'); -ok((not defined wc2re_unix('{a,\\{}b,c}'))); -ok((not defined wc2re_unix('{a\\{}b,c}'))); -ok(wc2re_unix('{a\\{b,c}d\\,e}') eq '(?:a\\{b|c)d\\,e\\}'); -ok(wc2re_unix('{a{b\\,c\\}d\\,e}') eq '\\{a\\{b\\,c\\}d\\,e\\}'); -ok(wc2re_unix('{a\\{\\\\}b\\,c\\\\}') eq '(?:a\\{\\\\)b\\,c\\\\\\}'); -ok(wc2re_unix('{a,\\{\\}b,c}') eq '(?:a|\\{\\}b|c)'); -ok(wc2re_unix('{a,\\{d,e,,\\}b,c}') eq '(?:a|\\{d|e||\\}b|c)'); -ok(wc2re_unix('{a,\\{d,e,,\\}b,c}\\\\{f,g,h,i}') eq '(?:a|\\{d|e||\\}b|c)\\\\(?:f|g|h|i)'); +ok(wc2re_jokers('a{b\\\\,c\\\\}d') eq 'a\\{b\\\\\\,c\\\\\\}d', 'wc2re_jokers'); + +ok(wc2re_win32('a{b\\\\,c\\\\}d') eq '(?:a\\{b\\\\|c\\\\\\}d)', 'wc2re_win32'); + +ok(wc2re_unix('{}') eq '(?:)', 'empty brackets'); +ok(wc2re_unix('{a}') eq '(?:a)', 'brackets 1'); +ok(wc2re_unix('{a,b}') eq '(?:a|b)', 'brackets 2'); +ok(wc2re_unix('{a,b,c}') eq '(?:a|b|c)', 'brackets 3'); + +ok(wc2re_unix('a{b,c}d') eq 'a(?:b|c)d', + '1 bracketed block'); +ok(wc2re_unix('a{b,c}d{e,,f}') eq 'a(?:b|c)d(?:e||f)', + '2 bracketed blocks'); +ok(wc2re_unix('a{b,c}d{e,,f}{g,h,}') eq 'a(?:b|c)d(?:e||f)(?:g|h|)', + '3 bracketed blocks'); + +ok(wc2re_unix('{a{b}}') eq '(?:a(?:b))', + '2 nested bracketed blocks 1'); +ok(wc2re_unix('{a,{b},c}') eq '(?:a|(?:b)|c)', + '2 nested bracketed blocks 2'); +ok(wc2re_unix('{a,{b{d}e},c}') eq '(?:a|(?:b(?:d)e)|c)', + '3 nested bracketed blocks'); +ok(wc2re_unix('{a,{b{d{}}e,f,,},c}') eq '(?:a|(?:b(?:d(?:))e|f||)|c)', + '4 nested bracketed blocks'); +ok(wc2re_unix('{a,{b{d{}}e,f,,},c}{,g{{}h,i}}') eq '(?:a|(?:b(?:d(?:))e|f||)|c)(?:|g(?:(?:)h|i))', + '4+3 nested bracketed blocks'); + +ok(wc2re_unix('\\{\\\\}') eq '\\{\\\\\\}', + 'escaping brackets'); +ok(wc2re_unix('\\{a,b,c\\\\\\}') eq '\\{a\\,b\\,c\\\\\\}', + 'escaping commas 1'); +ok(wc2re_unix('\\{a\\\\,b\\,c}') eq '\\{a\\\\\\,b\\,c\\}', + 'escaping commas 2'); +ok(wc2re_unix('\\{a\\\\,b\\,c\\}') eq '\\{a\\\\\\,b\\,c\\}', + 'escaping commas 3'); +ok(wc2re_unix('\\{a\\\\,b\\,c\\\\}') eq '\\{a\\\\\\,b\\,c\\\\\\}', + 'escaping brackets and commas'); + +ok(wc2re_unix('{a\\},b\\{,c}') eq '(?:a\\}|b\\{|c)', + 'overlapping brackets'); +ok(wc2re_unix('{a\\{b,c}d,e}') eq '(?:a\\{b|c)d\\,e\\}', + 'partial unbalanced catching 1'); +ok(wc2re_unix('{a\\{\\\\}b,c\\\\}') eq '(?:a\\{\\\\)b\\,c\\\\\\}', + 'partial unbalanced catching 2'); +ok(wc2re_unix('{a{b,c\\}d,e}') eq '\\{a\\{b\\,c\\}d\\,e\\}', + 'no partial unbalanced catching'); +ok(wc2re_unix('{a,\\{,\\},b}') eq '(?:a|\\{|\\}|b)', + 'substituting commas 1'); +ok(wc2re_unix('{a,\\{d,e,,\\}b,c}') eq '(?:a|\\{d|e||\\}b|c)', + 'substituting commas 2'); +ok(wc2re_unix('{a,\\{d,e,,\\}b,c}\\\\{f,g,h,i}') eq '(?:a|\\{d|e||\\}b|c)\\\\(?:f|g|h|i)', + 'handling the rest');