basic binary operator code
[dbsrgits/Data-Query.git] / t / expr.t
CommitLineData
9ee33178 1use strictures 1;
2use Test::More qw(no_plan);
3use Data::Query::ExprBuilder::Identifier;
b616bc41 4use Data::Query::Constants qw(DQ_IDENTIFIER DQ_OPERATOR DQ_VALUE);
9ee33178 5
b616bc41 6sub expr (&) {
7 _mk_expr($_[0]);
8}
9
10sub _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
20sub expr_is (&;@) {
21 my $sub = shift;
b616bc41 22 is_deeply(_mk_expr($sub), @_);
9ee33178 23}
24
25expr_is { $_->foo }
26 {
27 type => DQ_IDENTIFIER,
28 elements => [ 'foo' ]
29 },
30 'Simple identifier ok';
31
32
33expr_is { $_->foo->bar }
34 {
35 type => DQ_IDENTIFIER,
36 elements => [ 'foo', 'bar' ]
37 },
38 'Nested identifier ok';
b616bc41 39
40expr_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';