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";
24 ), "0 = 1", "emtpy -in";
28 [ '>', [-name => qw/me id/], [-value => 500 ] ]
31 "simple where clause";
33 eq_or_diff( [ SQL::Abstract->generate(
36 [ '>', [-name => qw/me id/], [-value => 500 ] ],
37 [ '==', [-name => qw/me name/], [-value => '200' ] ]
40 [ "WHERE me.id > ? AND me.name = ?",
51 [ '>', [-name => qw/me id/], [-value => 500 ] ],
52 [ '==', [-name => qw/me name/], [-value => '200' ] ],
54 ), "WHERE me.id > ? OR me.name = ?",
55 "where clause (simple or)";
60 [ '>', [-name => qw/me id/], [-value => 500 ] ],
62 [ '==', [-name => qw/me name/], [-value => '200' ] ],
63 [ '==', [-name => qw/me name/], [-value => '100' ] ]
66 ), "WHERE me.id > ? OR me.name = ? OR me.name = ?",
67 "where clause (nested or)";
71 [ '==', [-name => qw/me id/], [-value => 500 ] ],
73 [ '>', [-name => qw/me name/], [-value => '200' ] ],
74 [ '<', [-name => qw/me name/], [-value => '100' ] ]
77 ), "WHERE me.id = ? OR me.name > ? AND me.name < ?",
78 "where clause (inner and)";
82 [ '==', [-name => qw/me id/], [-value => 500 ] ],
84 [ '>', [-name => qw/me name/], [-value => '200' ] ],
85 [ '<', [-name => qw/me name/], [-value => '100' ] ]
88 ), "WHERE me.id = ? AND me.name > ? AND me.name < ?",
89 "where clause (nested and)";
94 [ '==', [-name => qw/me id/], [-value => 500 ] ],
96 [ '>', [-name => qw/me name/], [-value => '200' ] ],
97 [ '<', [-name => qw/me name/], [-value => '100' ] ]
100 ), "WHERE me.id = ? AND (me.name > ? OR me.name < ?)",
101 "where clause (inner or)";
104 [SQL::Abstract->generate(
108 [-name => qw/me id/],
116 [ "WHERE me.id IN (?, ?, ?)",
124 [SQL::Abstract->generate(
128 [-name => qw/me id/],
136 [ "WHERE me.id NOT IN (?, ?, ?)",
140 "where NOT IN clause");