App-BoolFindGrep
view release on metacpan or search on metacpan
t/app-boolfindgrep-bool.t view on Meta::CPAN
],
],
[ q{a AND NOT (b AND (c OR d))},
[ [ q(OPERAND), q(a), ],
[ q(OPERATOR), q(AND), ],
[ q(OPERATOR), q(NOT), ],
[ q(PARENTHESIS), q{(}, ],
[ q(OPERAND), q(b), ],
[ q(OPERATOR), q(AND), ],
[ q(PARENTHESIS), q{(}, ],
[ q(OPERAND), q(c), ],
[ q(OPERATOR), q(OR), ],
[ q(OPERAND), q(d), ],
[ q(PARENTHESIS), q{)}, ],
[ q(PARENTHESIS), q{)}, ],
],
],
[ q{/a AND b\// OR /c AND NOT d/},
[ [ q(OPERAND), q(a AND b/), ],
[ q(OPERATOR), q(OR), ],
[ q(OPERAND), q(c AND NOT d), ],
],
],
[ q{/(a - b)^2/ AND /(c * d)/},
[ [ q(OPERAND), q{(a - b)^2}, ],
[ q(OPERATOR), q(AND), ],
[ q(OPERAND), q{(c * d)}, ],
],
],
[ q{()}, [ q(Syntax Error in expression), ], ],
[ q{(())}, [ q(Syntax Error in expression), ], ],
[ q{() ()}, [ q(Syntax Error in expression), ], ],
[ q{a AND (b}, [ q(Syntax Error in expression), ], ],
[ q{a) OR b}, [ q(Syntax Error in expression), ], ],
[ q{//}, [ q(Syntax Error in expression), ], ],
[ q{///}, [ q(Syntax Error in expression), ], ],
[ q{////}, [ q(Syntax Error in expression), ], ],
[ q{// //}, [ q(Syntax Error in expression), ], ],
[ q{\/\/}, [ [ q(OPERAND), q(//) ] ] ]
);
my $method = q(parse_expr);
foreach my $test ( shuffle @test ) {
my ( $input, $expected ) = @$test;
my $testname = sprintf q(%s:'%s'), $method, $input;
$obj->slash_as_delim(1);
$obj->expression($input);
local $EVAL_ERROR;
eval { $obj->$method(); };
my $output
= $EVAL_ERROR
? [ ( split m{:}msx, $EVAL_ERROR )[0] ]
: $obj->parse();
is_deeply( $output, $expected, $testname );
}
done_testing();
# Local Variables:
# mode: perl
# coding: utf-8-unix
# End:
( run in 1.108 second using v1.01-cache-2.11-cpan-39bf76dae61 )