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 )