root/lang/perl/Data-Model/trunk/t/lib/Mock/Tests/NoKey.pm @ 24836

Revision 24836, 11.7 kB (checked in by yappo, 4 years ago)

add get_all test

Line 
1package Mock::Tests::NoKey;
2use t::Utils;
3use base 'Test::Class';
4use Mock::Tests;
5use Test::More;
6
7sub _check_iterator {
8    my($it, @checks) = @_;
9    while (my $row = $it->next) {
10        my $data = shift @checks;
11        ok $data;
12        is $row->int1, $data->{int1};
13        is $row->int2, $data->{int2};
14        is $row->char1, $data->{char1};
15    }
16}
17
18sub t_01_set : Tests {
19    my $ret1 = mock->set( not_key => { int1 => 1, int2 => 100, char1 => 'char' } );
20    isa_ok $ret1, mock_class."::not_key";
21    is $ret1->int1, 1;
22    is $ret1->int2, 100;
23    is $ret1->char1, 'char';
24
25    my $ret2 = mock->set( not_key => { int1 => 1, int2 => 100, char1 => 'char' } );
26    isa_ok $ret2, mock_class."::not_key";
27    is $ret2->int1, 1;
28    is $ret2->int2, 100;
29    is $ret2->char1, 'char';
30
31    my $ret3 = mock->set( not_key => { int1 => 2, int2 => 200, char1 => 'char' } );
32    isa_ok $ret3, mock_class."::not_key";
33    is $ret3->int1, 2;
34    is $ret3->int2, 200;
35    is $ret3->char1, 'char';
36
37    my $ret4 = mock->set( not_key => { int1 => 3, int2 => 200, char1 => 'lock' } );
38    isa_ok $ret4, mock_class."::not_key";
39    is $ret4->int1, 3;
40    is $ret4->int2, 200;
41    is $ret4->char1, 'lock';
42
43    my $ret5 = mock->set( not_key => { int1 => 1, int2 => 101, char1 => 'check' } );
44    isa_ok $ret5, mock_class."::not_key";
45    is $ret5->int1, 1;
46    is $ret5->int2, 101;
47    is $ret5->char1, 'check';
48}
49
50sub t_02_int1 : Tests {
51    my $it = mock->get(
52        not_key => +{
53            where => [
54                int1 => 1,
55            ],
56            order => [ { int2 => 'ASC' } ],
57        }
58    );
59    ok $it;
60    _check_iterator($it,
61        +{ int1 => 1, int2 => 100, char1 => 'char' },
62        +{ int1 => 1, int2 => 100, char1 => 'char' },
63        +{ int1 => 1, int2 => 101, char1 => 'check' },
64    );
65}
66
67sub t_03_int2 : Tests {
68    my $it = mock->get(
69        not_key => +{
70            where => [
71                int2 => 200,
72            ],
73            order => [ { int1 => 'ASC' } ],
74        }
75    );
76    ok $it;
77    _check_iterator($it,
78        +{ int1 => 2, int2 => 200, char1 => 'char' },
79        +{ int1 => 3, int2 => 200, char1 => 'lock' },
80    );
81}
82
83sub t_04_char1 : Tests {
84    my $it = mock->get(
85        not_key => +{
86            where => [
87                char1 => 'char',
88            ],
89            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
90        }
91    );
92    ok $it;
93    _check_iterator($it,
94        +{ int1 => 1, int2 => 100, char1 => 'char' },
95        +{ int1 => 1, int2 => 100, char1 => 'char' },
96        +{ int1 => 2, int2 => 200, char1 => 'char' },
97    );
98}
99
100sub t_05_char1_prefix : Tests {
101    my $it = mock->get(
102        not_key => +{
103            where => [
104                char1 => { LIKE => 'ch%' },
105            ],
106            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
107        }
108    );
109    ok $it;
110    _check_iterator($it,
111        +{ int1 => 1, int2 => 100, char1 => 'char' },
112        +{ int1 => 1, int2 => 100, char1 => 'char' },
113        +{ int1 => 1, int2 => 101, char1 => 'check' },
114        +{ int1 => 2, int2 => 200, char1 => 'char' },
115    );
116}
117
118sub t_06_char1_suffix : Tests {
119    my $it = mock->get(
120        not_key => +{
121            where => [
122                char1 => { LIKE => '%ck' },
123            ],
124            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
125        }
126    );
127    ok $it;
128    _check_iterator($it,
129        +{ int1 => 1, int2 => 101, char1 => 'check' },
130        +{ int1 => 3, int2 => 200, char1 => 'lock' },
131    );
132}
133
134sub t_07_char1_grep_1 : Tests {
135    my $it = mock->get(
136        not_key => +{
137            where => [
138                char1 => { LIKE => '%c%' },
139            ],
140            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
141        }
142    );
143    ok $it;
144    _check_iterator($it,
145        +{ int1 => 1, int2 => 100, char1 => 'char' },
146        +{ int1 => 1, int2 => 100, char1 => 'char' },
147        +{ int1 => 1, int2 => 101, char1 => 'check' },
148        +{ int1 => 2, int2 => 200, char1 => 'char' },
149        +{ int1 => 3, int2 => 200, char1 => 'lock' },
150    );
151}
152
153sub t_07_char1_grep_2 : Tests {
154    my $it = mock->get(
155        not_key => +{
156            where => [
157                char1 => { LIKE => '%h%' },
158            ],
159            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
160        }
161    );
162    ok $it;
163    _check_iterator($it,
164        +{ int1 => 1, int2 => 100, char1 => 'char' },
165        +{ int1 => 1, int2 => 100, char1 => 'char' },
166        +{ int1 => 1, int2 => 101, char1 => 'check' },
167        +{ int1 => 2, int2 => 200, char1 => 'char' },
168    );
169}
170
171sub t_07_char1_grep_3 : Tests {
172    my $it = mock->get(
173        not_key => +{
174            where => [
175                char1 => { LIKE => '%h_r%' },
176            ],
177            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
178        }
179    );
180    ok $it;
181    _check_iterator($it,
182        +{ int1 => 1, int2 => 100, char1 => 'char' },
183        +{ int1 => 1, int2 => 100, char1 => 'char' },
184        +{ int1 => 2, int2 => 200, char1 => 'char' },
185    );
186}
187
188sub t_07_char1_grep_4 : Tests {
189    my $it = mock->get(
190        not_key => +{
191            where => [
192                char1 => { LIKE => '%h.r%' },
193            ],
194            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
195        }
196    );
197    ok !$it;
198}
199
200sub t_07_char1_grep_5 : Tests {
201    my $it = mock->get(
202        not_key => +{
203            where => [
204                char1 => { LIKE => '.+' },
205            ],
206            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
207        }
208    );
209    ok !$it;
210}
211
212sub t_08_op_1 : Tests {
213    my $it = mock->get(
214        not_key => +{
215            where => [
216                int1 => { 'NOT IN' => [ 1, 2 ] },
217            ],
218            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
219        }
220    );
221    ok $it;
222    _check_iterator($it,
223        +{ int1 => 3, int2 => 200, char1 => 'lock' },
224    );
225}
226
227sub t_08_op_2 : Tests {
228    my $it = mock->get(
229        not_key => +{
230            where => [
231                int1 => { '!=' => 1 },
232            ],
233            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
234        }
235    );
236    ok $it;
237    _check_iterator($it,
238        +{ int1 => 2, int2 => 200, char1 => 'char' },
239        +{ int1 => 3, int2 => 200, char1 => 'lock' },
240    );
241}
242
243sub t_08_op_3 : Tests {
244    my $it = mock->get(
245        not_key => +{
246            where => [
247                int1 => { '>' => 1 },
248            ],
249            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
250        }
251    );
252    ok $it;
253    _check_iterator($it,
254        +{ int1 => 2, int2 => 200, char1 => 'char' },
255        +{ int1 => 3, int2 => 200, char1 => 'lock' },
256    );
257}
258
259sub t_08_op_4 : Tests {
260    my $it = mock->get(
261        not_key => +{
262            where => [
263                int2 => { '>' => 100 },
264                int2 => { '<' => 200 },
265            ],
266            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
267        }
268    );
269    ok $it;
270    _check_iterator($it,
271        +{ int1 => 1, int2 => 101, char1 => 'check' },
272    );
273}
274
275sub t_08_op_5 : Tests {
276    my $it = mock->get(
277        not_key => +{
278            where => [
279                -or => [
280                    int1 => { '>' => 2 },
281                    int2 => { '<' => 200 },
282                ],
283            ],
284            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
285        }
286    );
287    ok $it;
288    _check_iterator($it,
289        +{ int1 => 1, int2 => 100, char1 => 'char' },
290        +{ int1 => 1, int2 => 100, char1 => 'char' },
291        +{ int1 => 1, int2 => 101, char1 => 'check' },
292        +{ int1 => 3, int2 => 200, char1 => 'lock' },
293    );
294}
295
296sub t_09_in : Tests {
297    my $it = mock->get(
298        not_key => +{
299            where => [
300                -or => [
301                    int2 => { IN => [ 101, 200 ] },
302                ],
303            ],
304            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
305        }
306    );
307    ok $it;
308    _check_iterator($it,
309        +{ int1 => 1, int2 => 101, char1 => 'check' },
310        +{ int1 => 2, int2 => 200, char1 => 'char' },
311        +{ int1 => 3, int2 => 200, char1 => 'lock' },
312    );
313}
314
315sub t_10_get_all : Tests {
316    my $it = mock->get(
317        'not_key',
318        +{
319            where => [ int1 => +{ '!=' => 100 } ],
320            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
321        }
322    );
323    ok $it, 'get';
324    _check_iterator($it,
325        +{ int1 => 1, int2 => 100, char1 => 'char' },
326        +{ int1 => 1, int2 => 100, char1 => 'char' },
327        +{ int1 => 1, int2 => 101, char1 => 'check' },
328        +{ int1 => 2, int2 => 200, char1 => 'char' },
329        +{ int1 => 3, int2 => 200, char1 => 'lock' },
330    );
331}
332
333sub t_50_and : Tests {
334    my $it = mock->get(
335        not_key => +{
336            where => [
337                int1 => 1,
338                int2 => 100,
339            ],
340            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
341        }
342    );
343    ok $it;
344    _check_iterator($it,
345        +{ int1 => 1, int2 => 100, char1 => 'char' },
346        +{ int1 => 1, int2 => 100, char1 => 'char' },
347    );
348}
349
350sub t_50_or : Tests {
351    my $it = mock->get(
352        not_key => +{
353            where => [
354                -or => [
355                    int1 => 1,
356                    int2 => 100,
357                ],
358            ],
359            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
360        }
361    );
362    ok $it;
363    _check_iterator($it,
364        +{ int1 => 1, int2 => 100, char1 => 'char' },
365        +{ int1 => 1, int2 => 100, char1 => 'char' },
366        +{ int1 => 1, int2 => 101, char1 => 'check' },
367    );
368}
369
370sub t_51_and_or : Tests {
371    my $it = mock->get(
372        not_key => +{
373            where => [
374                -and => [
375                    char1 => 'char',
376                    -or   => [
377                        int2 => 100,
378                        int2 => 200,
379                    ],
380                ]
381            ],
382            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
383        }
384    );
385    ok $it;
386    _check_iterator($it,
387        +{ int1 => 1, int2 => 100, char1 => 'char' },
388        +{ int1 => 1, int2 => 100, char1 => 'char' },
389        +{ int1 => 2, int2 => 200, char1 => 'char' },
390    );
391}
392
393sub t_61_update : Tests {
394    my($get) = mock->get(
395        not_key => +{
396            where => [
397                int1 => 1,
398            ],
399        }
400    );
401    isa_ok $get, mock_class."::not_key";
402    $get->char1('update');
403    my $set = $get->update;
404    ok !$set;
405}
406
407sub t_62_delete : Tests {
408    my($get) = mock->get(
409        not_key => +{
410            where => [
411                int1 => 1,
412            ],
413        }
414    );
415    isa_ok $get, mock_class."::not_key";
416    ok(!$get->delete);
417    ($get) = mock->get(
418        not_key => +{
419            where => [
420                int1 => 1,
421            ],
422        }
423    );
424    isa_ok $get, mock_class."::not_key";
425}
426
427sub t_71_direct_update : Tests {
428
429    my $set1 = mock->set( not_key => { int1 => 99, int2 => 999, char1 => 'kyu' } );
430    isa_ok $set1, mock_class."::not_key";
431    is $set1->int1, 99;
432    is $set1->int2, 999;
433    is $set1->char1, 'kyu';
434
435    ok mock->update_direct(
436        not_key => +{
437            where => [
438                char1 => 'kyu',
439            ],
440        },
441        +{
442            int1  => 100,
443            int2  => 1000,
444            char1 => 'sen',
445        },
446    );
447
448    my $it = mock->get(
449        'not_key',
450        +{
451            where => [ int1 => +{ '!=' => 100 } ],
452            order => [ { int1 => 'ASC' }, { int2 => 'ASC' } ],
453        }
454    );
455    ok $it, 'get';
456    _check_iterator($it,
457        +{ int1 => 1, int2 => 100, char1 => 'char' },
458        +{ int1 => 1, int2 => 100, char1 => 'char' },
459        +{ int1 => 1, int2 => 101, char1 => 'check' },
460        +{ int1 => 2, int2 => 200, char1 => 'char' },
461        +{ int1 => 3, int2 => 200, char1 => 'lock' },
462    );
463
464    my($get1) = mock->get( not_key => { where => [ int1 => 100 ] } );
465    isa_ok $get1, mock_class."::not_key";
466    is $get1->int1, 100;
467    is $get1->int2, 1000;
468    is $get1->char1, 'sen';
469}
470
4711;
Note: See TracBrowser for help on using the browser.