2 use Test::More qw(no_plan);
5 use Data::Query::Renderer::Perl;
6 use Data::Query::ExprHelpers qw(perl_scalar_value);
7 use Data::Query::ExprDeclare;
8 use Scalar::Util qw(blessed);
10 my $rend = Data::Query::Renderer::Perl->new;
12 sub binding { map perl_scalar_value($_), @_ }
14 sub expr_perl_is (&;@) {
16 my $e = Data::Query::ExprDeclare::_run_expr($sub);
17 $e = blessed($e) ? $e->{expr} : $e;
19 ? is_deeply($rend->render($e), @_)
20 : ::Dwarn($rend->render($e));
23 expr_perl_is { $_->foo }
25 'Simple identifier -> Perl';
27 expr_perl_is { $_->foo->group }
29 'Complex identifier -> Perl';
31 expr_perl_is { $_->foo == 1 }
32 [ "( \$_->foo == +shift )", binding(1) ],
33 "Simple expression -> Perl";
35 expr_perl_is { ($_->foo == 1) & ($_->bar eq "foo") }
37 "( ( \$_->foo == +shift ) and ( \$_->bar eq +shift ) )",
40 "Compound expression -> Perl";
42 # Skipping flattening test for now
44 expr_perl_is { !$_->foo }
46 "Unary expression ok";