4 use Test::More tests => 12;
7 use_ok('SQL::Abstract') or BAIL_OUT( "$@" );
9 my $sqla = SQL::Abstract->create(1);
15 {-type => name => args => [qw/me id/] },
16 { -type => 'value', value => 500 }
20 "simple where clause";
23 { -type => 'expr', op => 'in', args => [ ] }
24 ), "0 = 1", "emtpy -in";
29 args => [ { -type => 'name', args => ['foo'] } ],
31 ), "0 = 1", "emtpy -in";
37 {-type => 'name', args => [qw/me id/]},
38 {-type => 'value', value => 500 }
48 {-type => 'name', args => [qw/me id/]},
49 {-type => 'value', value => 500 }
55 {-type => 'name', args => [qw/me name/]},
56 {-type => 'value', value => '200' }
61 eq_or_diff( [ SQL::Abstract->generate(
68 [ "me.id > ? AND me.name = ?",
78 { -type => 'expr', op => 'or', args => $cols }
79 ), "me.id > ? OR me.name = ?",
80 "where clause (simple or)";
84 { -type => 'expr', op => 'or',
86 { -type => 'expr', op => '==',
87 args => [ {-type => 'name', args => [qw/me name/] }, {-type => 'value', value => 500 } ]
89 { -type => 'expr', op => 'or', args => $cols }
92 ), "me.name = ? OR me.id > ? OR me.name = ?",
93 "where clause (nested or)";
96 { -type => 'expr', op => 'or',
98 { -type => 'expr', op => '==',
99 args => [ {-type => 'name', args => [qw/me name/] }, {-type => 'value', value => 500 } ]
101 { -type => 'expr', op => 'and', args => $cols }
104 ), "me.name = ? OR me.id > ? AND me.name = ?",
105 "where clause (inner and)";
110 [ '==', [-name => qw/me id/], [-value => 500 ] ],
112 [ '>', [-name => qw/me name/], [-value => '200' ] ],
113 [ '<', [-name => qw/me name/], [-value => '100' ] ]
116 ), "WHERE me.id = ? AND me.name > ? AND me.name < ?",
117 "where clause (nested and)";
122 [ '==', [-name => qw/me id/], [-value => 500 ] ],
124 [ '>', [-name => qw/me name/], [-value => '200' ] ],
125 [ '<', [-name => qw/me name/], [-value => '100' ] ]
128 ), "WHERE me.id = ? AND (me.name > ? OR me.name < ?)",
129 "where clause (inner or)";
132 [SQL::Abstract->generate(
136 [-name => qw/me id/],
144 [ "WHERE me.id IN (?, ?, ?)",
152 [SQL::Abstract->generate(
156 [-name => qw/me id/],
164 [ "WHERE me.id NOT IN (?, ?, ?)",
168 "where NOT IN clause");