Use ExprDeclare in tests instead of expr.include
[dbsrgits/Data-Query.git] / t / perl.t
CommitLineData
81648036 1use strictures 1;
2use Test::More qw(no_plan);
3
4use Devel::Dwarn;
5use Data::Query::Renderer::Perl;
6use Data::Query::ExprHelpers qw(perl_scalar_value);
ee4f4756 7use Data::Query::ExprDeclare;
8use Scalar::Util qw(blessed);
81648036 9
10my $rend = Data::Query::Renderer::Perl->new;
11
12sub binding { map perl_scalar_value($_), @_ }
13
14sub expr_perl_is (&;@) {
15 my $sub = shift;
ee4f4756 16 my $e = Data::Query::ExprDeclare::_run_expr($sub);
17 $e = blessed($e) ? $e->{expr} : $e;
18 @_
19 ? is_deeply($rend->render($e), @_)
20 : ::Dwarn($rend->render($e));
81648036 21}
22
23expr_perl_is { $_->foo }
24 [ '$_->foo' ],
25 'Simple identifier -> Perl';
26
27expr_perl_is { $_->foo->group }
28 [ '$_->foo->group' ],
29 'Complex identifier -> Perl';
30
31expr_perl_is { $_->foo == 1 }
32 [ "( \$_->foo == +shift )", binding(1) ],
33 "Simple expression -> Perl";
34
35expr_perl_is { ($_->foo == 1) & ($_->bar eq "foo") }
36 [
37 "( ( \$_->foo == +shift ) and ( \$_->bar eq +shift ) )",
38 binding(1, "foo")
39 ],
40 "Compound expression -> Perl";
41
42# Skipping flattening test for now
43
44expr_perl_is { !$_->foo }
45 [ '!( $_->foo )' ],
46 "Unary expression ok";