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 }
44 eq_or_diff( [ SQL::Abstract->generate(
52 {-type => 'name', args => [qw/me id/]},
53 {-type => 'value', value => 500 }
59 {-type => 'name', args => [qw/me name/]},
60 {-type => 'value', value => '200' }
66 [ "me.id > ? AND me.name = ?",
78 [ '>', [-name => qw/me id/], [-value => 500 ] ],
79 [ '==', [-name => qw/me name/], [-value => '200' ] ],
81 ), "WHERE me.id > ? OR me.name = ?",
82 "where clause (simple or)";
87 [ '>', [-name => qw/me id/], [-value => 500 ] ],
89 [ '==', [-name => qw/me name/], [-value => '200' ] ],
90 [ '==', [-name => qw/me name/], [-value => '100' ] ]
93 ), "WHERE me.id > ? OR me.name = ? OR me.name = ?",
94 "where clause (nested or)";
98 [ '==', [-name => qw/me id/], [-value => 500 ] ],
100 [ '>', [-name => qw/me name/], [-value => '200' ] ],
101 [ '<', [-name => qw/me name/], [-value => '100' ] ]
104 ), "WHERE me.id = ? OR me.name > ? AND me.name < ?",
105 "where clause (inner and)";
109 [ '==', [-name => qw/me id/], [-value => 500 ] ],
111 [ '>', [-name => qw/me name/], [-value => '200' ] ],
112 [ '<', [-name => qw/me name/], [-value => '100' ] ]
115 ), "WHERE me.id = ? AND me.name > ? AND me.name < ?",
116 "where clause (nested and)";
121 [ '==', [-name => qw/me id/], [-value => 500 ] ],
123 [ '>', [-name => qw/me name/], [-value => '200' ] ],
124 [ '<', [-name => qw/me name/], [-value => '100' ] ]
127 ), "WHERE me.id = ? AND (me.name > ? OR me.name < ?)",
128 "where clause (inner or)";
131 [SQL::Abstract->generate(
135 [-name => qw/me id/],
143 [ "WHERE me.id IN (?, ?, ?)",
151 [SQL::Abstract->generate(
155 [-name => qw/me id/],
163 [ "WHERE me.id NOT IN (?, ?, ?)",
167 "where NOT IN clause");