Commit | Line | Data |
9ee33178 |
1 | use strictures 1; |
2 | use Test::More qw(no_plan); |
3 | use Data::Query::ExprBuilder::Identifier; |
b616bc41 |
4 | use Data::Query::Constants qw(DQ_IDENTIFIER DQ_OPERATOR DQ_VALUE); |
9ee33178 |
5 | |
b616bc41 |
6 | sub expr (&) { |
7 | _mk_expr($_[0]); |
8 | } |
9 | |
10 | sub _mk_expr { |
9ee33178 |
11 | local $_ = Data::Query::ExprBuilder::Identifier->new({ |
12 | expr => { |
13 | type => DQ_IDENTIFIER, |
14 | elements => [], |
15 | }, |
16 | }); |
17 | $_[0]->()->{expr}; |
18 | } |
19 | |
20 | sub expr_is (&;@) { |
21 | my $sub = shift; |
b616bc41 |
22 | is_deeply(_mk_expr($sub), @_); |
9ee33178 |
23 | } |
24 | |
25 | expr_is { $_->foo } |
26 | { |
27 | type => DQ_IDENTIFIER, |
28 | elements => [ 'foo' ] |
29 | }, |
30 | 'Simple identifier ok'; |
31 | |
32 | |
33 | expr_is { $_->foo->bar } |
34 | { |
35 | type => DQ_IDENTIFIER, |
36 | elements => [ 'foo', 'bar' ] |
37 | }, |
38 | 'Nested identifier ok'; |
b616bc41 |
39 | |
40 | expr_is { $_->foo == 3 } |
41 | { |
42 | type => DQ_OPERATOR, |
43 | operator => { perl => '==' }, |
44 | args => [ |
45 | expr { $_->foo }, |
46 | { |
47 | type => DQ_VALUE, |
48 | subtype => { perl => 'Scalar' }, |
49 | value => 3, |
50 | }, |
51 | ], |
52 | }, |
53 | 'Simple equality ok'; |