# VOODOO LINE-NOISE my($C,$M,$P,$N,$S);END{print"1..$C\n$M";print"\nfailed: $N\n"if$N} sub ok{$C++; $M.= ($_[0]||!@_)?"ok $C\n":($N++,"not ok $C (". ((caller 1)[1]||(caller 0)[1]).":".((caller 1)[2]||(caller 0)[2]).")\n")} sub try{$P=qr/^$_[0]$/}sub fail{ok($S=$_[0]!~$P)}sub pass{ok($S=$_[0]=~$P)} # LOAD use Regexp::Common; ok; # TEST COMMA-SEPARATED try $RE{list}; fail "a"; pass "a,b"; pass "a, b"; pass "a,b,c"; pass "a, b, c"; fail "a b"; fail "a b"; fail "a b c"; fail "a b c"; # TEST TAB-SEPARATED try $RE{list}{"-sep$;\t"}; fail "a"; pass "a\tb"; pass "a\tb"; pass "a\tb\tc"; pass "a\tb\tc"; fail "a b"; fail "a b"; pass "a b\tc"; fail "a b c"; # TEST WORDS try $RE{list}{and}; fail "a"; pass "a and b"; pass "a, b, and c"; pass "a, b and c"; fail "a,b,c"; fail "a, b, c"; try $RE{list}{conj}; fail "a"; pass "a and b"; pass "a, b, and c"; pass "a, b and c"; pass "a, b, or c"; pass "a, b or c"; fail "a,b,c"; fail "a, b, c"; try $RE{list}{conj}{-word => 'ou'}; fail "a"; pass "a ou b"; pass "a, b, ou c"; pass "a, b ou c"; fail "a,b,c"; fail "a, b, c"; # TRY NESTED PATTERNS try $RE{list}{"-pat$;$RE{quoted}"}; fail q{a}; pass q{'a', 'b'}; fail q{'a', 'b' and 'c'}; pass q{'a', "b", `c`}; fail q{a, b, c}; try $RE{list}{"-pat$;$RE{quoted}"}{-lastsep => '\s*(and|or)\s*'}; fail q{a}; pass q{'a' and 'b'}; pass q{'a', 'b' and 'c'}; fail q{'a', "b", `c`}; pass q{'a', "b" or `c`}; fail q{a, b, c};