4 use Test::More tests => 13;
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 }
26 {-type => 'name', args => [qw/me id/]},
27 {-type => 'value', value => 500 }
37 {-type => 'name', args => [qw/me id/]},
38 {-type => 'value', value => 500 }
44 {-type => 'name', args => [qw/me name/]},
45 {-type => 'value', value => '200' }
50 eq_or_diff( [ SQL::Abstract->generate(
57 [ "me.id > ? AND me.name = ?",
67 { -type => 'expr', op => 'or', args => $cols }
68 ), "me.id > ? OR me.name = ?",
69 "expr clause (simple or)";
73 { -type => 'expr', op => 'or',
75 { -type => 'expr', op => '==',
76 args => [ {-type => 'name', args => [qw/me name/] }, {-type => 'value', value => 500 } ]
78 { -type => 'expr', op => 'or', args => $cols }
81 ), "me.name = ? OR me.id > ? OR me.name = ?",
82 "expr clause (nested or)";
85 { -type => 'expr', op => 'or',
87 { -type => 'expr', op => '==',
88 args => [ {-type => 'name', args => [qw/me name/] }, {-type => 'value', value => 500 } ]
90 { -type => 'expr', op => 'and', args => $cols }
93 ), "me.name = ? OR me.id > ? AND me.name = ?",
94 "expr clause (inner and)";
97 { -type => 'expr', op => 'and', args => [
98 { -type => 'expr', op => '==', args => [
99 {-type => 'name', args => [qw/me id/] }, {-type => 'value', value => 200 }
102 { -type => 'expr', op => 'and', args => $cols }
105 ), "me.id = ? AND me.id > ? AND me.name = ?",
106 "expr clause (nested and)";
110 { -type => 'expr', op => 'and', args => [
111 { -type => 'expr', op => '==', args => [
112 {-type => 'name', args => [qw/me id/] }, {-type => 'value', value => 200 }
115 { -type => 'expr', op => 'or', args => $cols }
118 ), "me.id = ? AND (me.id > ? OR me.name = ?)",
119 "expr clause (inner or)";
122 { -type => 'expr', op => 'in', args => [ ] }
123 ), "0 = 1", "emtpy -in";
128 args => [ { -type => 'name', args => ['foo'] } ],
130 ), "0 = 1", "emtpy -in";
133 [SQL::Abstract->generate(
141 {-type => 'name', args => [qw/me id/] },
142 {-type => 'value', value => 100 },
143 {-type => 'value', value => 200 },
144 {-type => 'value', value => 300 },
151 [ "me.id IN (?, ?, ?)",
158 [SQL::Abstract->generate(
166 {-type => 'name', args => [qw/me id/] },
167 {-type => 'value', value => 100 },
168 {-type => 'value', value => 200 },
169 {-type => 'value', value => 300 },
176 [ "me.id NOT IN (?, ?, ?)",