Couple extra tweaks to Schema to support proposed C::M::DBIC
[dbsrgits/DBIx-Class.git] / t / cdbi-t / 21-iterator.t
CommitLineData
95a70f01 1use strict;
2use Test::More;
3
4BEGIN {
5 eval "use DBD::SQLite";
6 plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 33);
7}
8
9use lib 't/testlib';
10use Film;
11
12my $it_class = "DBIx::Class::Cursor";
13
14my @film = (
15 Film->create({ Title => 'Film 1' }),
16 Film->create({ Title => 'Film 2' }),
17 Film->create({ Title => 'Film 3' }),
18 Film->create({ Title => 'Film 4' }),
19 Film->create({ Title => 'Film 5' }),
20 Film->create({ Title => 'Film 6' }),
21);
22
23{
24 my $it1 = Film->retrieve_all;
25 isa_ok $it1, $it_class;
26
27 my $it2 = Film->retrieve_all;
28 isa_ok $it2, $it_class;
29
30 while (my $from1 = $it1->next) {
31 my $from2 = $it2->next;
32 is $from1->id, $from2->id, "Both iterators get $from1";
33 }
34}
35
36{
37 my $it = Film->retrieve_all;
38 is $it->first->title, "Film 1", "Film 1 first";
39 is $it->next->title, "Film 2", "Film 2 next";
40 is $it->first->title, "Film 1", "First goes back to 1";
41 is $it->next->title, "Film 2", "With 2 still next";
42 $it->reset;
43 is $it->next->title, "Film 1", "Reset brings us to film 1 again";
44 is $it->next->title, "Film 2", "And 2 is still next";
45}
46
47SKIP: {
525035fb 48 #skip "Iterator doesn't yet have slice support", 19;
95a70f01 49
50{
51 my $it = Film->retrieve_all;
52 my @slice = $it->slice(2,4);
53 is @slice, 3, "correct slice size (array)";
54 is $slice[0]->title, "Film 3", "Film 3 first";
55 is $slice[2]->title, "Film 5", "Film 5 last";
56}
57
58{
59 my $it = Film->retrieve_all;
60 my $slice = $it->slice(2,4);
61 isa_ok $slice, $it_class, "slice as iterator";
62 is $slice->count, 3,"correct slice size (array)";
63 is $slice->first->title, "Film 3", "Film 3 first";
64 is $slice->next->title, "Film 4", "Film 4 next";
65 is $slice->first->title, "Film 3", "First goes back to 3";
66 is $slice->next->title, "Film 4", "With 4 still next";
67 $slice->reset;
68 is $slice->next->title, "Film 3", "Reset brings us to film 3 again";
69 is $slice->next->title, "Film 4", "And 4 is still next";
70
71 # check if the original iterator still works
72 is $it->count, 6, "back to the original iterator, is of right size";
73 is $it->first->title, "Film 1", "Film 1 first";
74 is $it->next->title, "Film 2", "Film 2 next";
75 is $it->first->title, "Film 1", "First goes back to 1";
76 is $it->next->title, "Film 2", "With 2 still next";
77 is $it->next->title, "Film 3", "Film 3 is still in original Iterator";
78 $it->reset;
79 is $it->next->title, "Film 1", "Reset brings us to film 1 again";
80 is $it->next->title, "Film 2", "And 2 is still next";
81}
82
83} # End SKIP