File Coverage

test/Romani/Query/Comparison.pm
Criterion Covered Total %
statement 78 177 44.0
branch n/a
condition n/a
subroutine 26 44 59.0
pod n/a
total 104 221 47.0


line stmt bran cond sub pod time code
1             #!/usr/bin/perl -w
2              
3             package Local::Romani::Query::Comparison;
4 1     1   794 use base qw(Test::Class);
  1         1  
  1         76  
5              
6 1     1   547 use DBIx::Romani::Query::Where;
  1         2  
  1         27  
7 1     1   6 use DBIx::Romani::Query::Comparison;
  1         2  
  1         22  
8 1     1   5 use DBIx::Romani::Query::SQL::Column;
  1         2  
  1         21  
9 1     1   5 use DBIx::Romani::Query::SQL::Literal;
  1         2  
  1         20  
10 1     1   5 use DBIx::Romani::Driver::sqlite;
  1         1  
  1         19  
11 1     1   4 use Test::More;
  1         2  
  1         7  
12 1     1   284 use strict;
  1         2  
  1         26  
13              
14 1     1   6 use Data::Dumper;
  1         1  
  1         282  
15              
16             # utility function makes SQL out of whatever
17 0     0     sub generate_sql { return DBIx::Romani::Driver::sqlite->new()->generate_sql( @_ ) };
18              
19             sub comparisonAnd : Test(1)
20             {
21 0     0   0 my $op_eq1 = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::EQUAL );
22 0         0 $op_eq1->add( DBIx::Romani::Query::SQL::Column->new( undef, 'column1' ) );
23 0         0 $op_eq1->add( DBIx::Romani::Query::SQL::Literal->new( 'ABC' ) );
24              
25 0         0 my $op_eq2 = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::EQUAL );
26 0         0 $op_eq2->add( DBIx::Romani::Query::SQL::Column->new( undef, 'column2' ) );
27 0         0 $op_eq2->add( DBIx::Romani::Query::SQL::Literal->new( '123' ) );
28              
29 0         0 my $op_and = DBIx::Romani::Query::Where->new( $DBIx::Romani::Query::Where::AND );
30 0         0 $op_and->add( $op_eq1 );
31 0         0 $op_and->add( $op_eq2 );
32              
33 0         0 my $s = generate_sql( $op_and );
34 0         0 is( $s, "column1 = 'ABC' AND column2 = '123'" );
35 1     1   6 }
  1         2  
  1         6  
36              
37             sub comparisonOr : Test(1)
38             {
39 0     0   0 my $op_eq1 = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::EQUAL );
40 0         0 $op_eq1->add( DBIx::Romani::Query::SQL::Column->new( undef, 'column1' ) );
41 0         0 $op_eq1->add( DBIx::Romani::Query::SQL::Literal->new( 'ABC' ) );
42              
43 0         0 my $op_eq2 = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::EQUAL );
44 0         0 $op_eq2->add( DBIx::Romani::Query::SQL::Column->new( undef, 'column2' ) );
45 0         0 $op_eq2->add( DBIx::Romani::Query::SQL::Literal->new( '123' ) );
46              
47 0         0 my $op_and = DBIx::Romani::Query::Where->new( $DBIx::Romani::Query::Where::OR );
48 0         0 $op_and->add( $op_eq1 );
49 0         0 $op_and->add( $op_eq2 );
50              
51 0         0 my $s = generate_sql( $op_and );
52 0         0 is( $s, "column1 = 'ABC' OR column2 = '123'" );
53 1     1   386 }
  1         1  
  1         5  
54              
55             sub comparisonEqual : Test(1)
56             {
57 0     0   0 my $equal = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::EQUAL );
58 0         0 $equal->add( DBIx::Romani::Query::SQL::Column->new( undef, 'column_name' ) );
59 0         0 $equal->add( DBIx::Romani::Query::SQL::Literal->new( 'ABC' ) );
60              
61 0         0 my $s = generate_sql( $equal );
62 0         0 is( $s, "column_name = 'ABC'" );
63 1     1   280 }
  1         2  
  1         4  
64              
65             sub comparisonNotEqual : Test(1)
66             {
67 0     0   0 my $equal = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::NOT_EQUAL );
68 0         0 $equal->add( DBIx::Romani::Query::SQL::Column->new( undef, 'column_name' ) );
69 0         0 $equal->add( DBIx::Romani::Query::SQL::Literal->new( 'ABC' ) );
70              
71 0         0 my $s = generate_sql( $equal );
72 0         0 is( $s, "column_name <> 'ABC'" );
73 1     1   424 }
  1         1  
  1         5  
74              
75             sub comparisonGreaterThan : Test(1)
76             {
77 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::GREATER_THAN );
78 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'price' ) );
79 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '21000' ) );
80              
81 0         0 my $s = generate_sql( $op );
82 0         0 is( $s, "price > '21000'" );
83 1     1   270 }
  1         2  
  1         3  
84              
85             sub comparisonGreaterEqual : Test(1)
86             {
87 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::GREATER_EQUAL );
88 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'price' ) );
89 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '21000' ) );
90              
91 0         0 my $s = generate_sql( $op );
92 0         0 is( $s, "price >= '21000'" );
93 1     1   394 }
  1         2  
  1         4  
94              
95             sub comparisonLessThan : Test(1)
96             {
97 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::LESS_THAN );
98 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'price' ) );
99 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '21000' ) );
100              
101 0         0 my $s = generate_sql( $op );
102 0         0 is( $s, "price < '21000'" );
103 1     1   273 }
  1         2  
  1         5  
104              
105             sub comparisonLessEqual : Test(1)
106             {
107 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::LESS_EQUAL );
108 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'price' ) );
109 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '21000' ) );
110              
111 0         0 my $s = generate_sql( $op );
112 0         0 is( $s, "price <= '21000'" );
113 1     1   306 }
  1         2  
  1         4  
114              
115             sub comparisonLike : Test(1)
116             {
117 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::LIKE );
118 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'name' ) );
119 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '%something%' ) );
120              
121 0         0 my $s = generate_sql( $op );
122 0         0 is( $s, 'name LIKE \'%something%\'' );
123 1     1   270 }
  1         7  
  1         5  
124              
125             sub comparisonNotLike : Test(1)
126             {
127 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::NOT_LIKE );
128 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'name' ) );
129 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '%something%' ) );
130              
131 0         0 my $s = generate_sql( $op );
132 0         0 is( $s, 'name NOT LIKE \'%something%\'' );
133 1     1   255 }
  1         36  
  1         6  
134              
135             sub comparisonILike : Test(1)
136             {
137 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::ILIKE );
138 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'name' ) );
139 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '%something%' ) );
140              
141 0         0 my $s = generate_sql( $op );
142 0         0 is( $s, 'name ILIKE \'%something%\'' );
143 1     1   2174 }
  1         3  
  1         10  
144              
145             sub comparisonNotILike : Test(1)
146             {
147 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::NOT_ILIKE );
148 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'name' ) );
149 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '%something%' ) );
150              
151 0         0 my $s = generate_sql( $op );
152 0         0 is( $s, 'name NOT ILIKE \'%something%\'' );
153 1     1   551 }
  1         3  
  1         5  
154              
155             sub comparisonIsNull : Test(1)
156             {
157 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::IS_NULL );
158 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'optional_id' ) );
159              
160 0         0 my $s = generate_sql( $op );
161 0         0 is( $s, 'optional_id IS NULL' );
162 1     1   254 }
  1         3  
  1         6  
163              
164             sub comparisonIsNotNull : Test(1)
165             {
166 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::IS_NOT_NULL );
167 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'optional_id' ) );
168              
169 0         0 my $s = generate_sql( $op );
170 0         0 is( $s, 'optional_id IS NOT NULL' );
171 1     1   246 }
  1         2  
  1         4  
172              
173             sub comparisonBetween : Test(1)
174             {
175 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::BETWEEN );
176 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'year' ) );
177 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '1990' ) );
178 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '2001' ) );
179              
180 0         0 my $s = generate_sql( $op );
181 0         0 is( $s, "year BETWEEN '1990' AND '2001'" );
182 1     1   298 }
  1         2  
  1         5  
183              
184             sub comparisonIn : Test(1)
185             {
186 0     0   0 my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::IN );
187 0         0 $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'year' ) );
188 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '2000' ) );
189 0         0 $op->add( DBIx::Romani::Query::SQL::Literal->new( '2001' ) );
190              
191 0         0 my $s = generate_sql( $op );
192 0         0 is( $s, "year IN ('2000','2001')" );
193 1     1   289 }
  1         2  
  1         5  
194              
195             sub comparisonNotIn : Test(1)
196             {
197 0     0     my $op = DBIx::Romani::Query::Comparison->new( $DBIx::Romani::Query::Comparison::NOT_IN );
198 0           $op->add( DBIx::Romani::Query::SQL::Column->new( undef, 'year' ) );
199 0           $op->add( DBIx::Romani::Query::SQL::Literal->new( '2000' ) );
200 0           $op->add( DBIx::Romani::Query::SQL::Literal->new( '2001' ) );
201              
202 0           my $s = generate_sql( $op );
203 0           is( $s, "year NOT IN ('2000','2001')" );
204 1     1   287 }
  1         2  
  1         6  
205              
206             1;
207