Reorganize CDBICompat tests - centralize prereq checks in one place
[dbsrgits/DBIx-Class.git] / t / cdbi / 21-iterator.t
CommitLineData
95a70f01 1use strict;
2use Test::More;
3
50891152 4use lib 't/cdbi/testlib';
95a70f01 5use Film;
6
223b8fe3 7my $it_class = "DBIx::Class::ResultSet";
95a70f01 8
9my @film = (
6a3bf251 10 Film->create({ Title => 'Film 1' }),
11 Film->create({ Title => 'Film 2' }),
12 Film->create({ Title => 'Film 3' }),
13 Film->create({ Title => 'Film 4' }),
14 Film->create({ Title => 'Film 5' }),
15 Film->create({ Title => 'Film 6' }),
95a70f01 16);
17
18{
6a3bf251 19 my $it1 = Film->retrieve_all;
20 isa_ok $it1, $it_class;
95a70f01 21
6a3bf251 22 my $it2 = Film->retrieve_all;
23 isa_ok $it2, $it_class;
95a70f01 24
6a3bf251 25 while (my $from1 = $it1->next) {
26 my $from2 = $it2->next;
27 is $from1->id, $from2->id, "Both iterators get $from1";
28 }
95a70f01 29}
30
31{
6a3bf251 32 my $it = Film->retrieve_all;
33 is $it->first->title, "Film 1", "Film 1 first";
34 is $it->next->title, "Film 2", "Film 2 next";
35 is $it->first->title, "Film 1", "First goes back to 1";
36 is $it->next->title, "Film 2", "With 2 still next";
37 $it->reset;
38 is $it->next->title, "Film 1", "Reset brings us to film 1 again";
39 is $it->next->title, "Film 2", "And 2 is still next";
95a70f01 40}
41
95a70f01 42
43{
6a3bf251 44 my $it = Film->retrieve_all;
45 my @slice = $it->slice(2,4);
46 is @slice, 3, "correct slice size (array)";
47 is $slice[0]->title, "Film 3", "Film 3 first";
48 is $slice[2]->title, "Film 5", "Film 5 last";
95a70f01 49}
50
51{
6a3bf251 52 my $it = Film->retrieve_all;
53 my $slice = $it->slice(2,4);
54 isa_ok $slice, $it_class, "slice as iterator";
55 is $slice->count, 3,"correct slice size (array)";
56 is $slice->first->title, "Film 3", "Film 3 first";
57 is $slice->next->title, "Film 4", "Film 4 next";
58 is $slice->first->title, "Film 3", "First goes back to 3";
59 is $slice->next->title, "Film 4", "With 4 still next";
60 $slice->reset;
61 is $slice->next->title, "Film 3", "Reset brings us to film 3 again";
62 is $slice->next->title, "Film 4", "And 4 is still next";
95a70f01 63
6a3bf251 64 # check if the original iterator still works
65 is $it->count, 6, "back to the original iterator, is of right size";
66 is $it->first->title, "Film 1", "Film 1 first";
67 is $it->next->title, "Film 2", "Film 2 next";
68 is $it->first->title, "Film 1", "First goes back to 1";
69 is $it->next->title, "Film 2", "With 2 still next";
70 is $it->next->title, "Film 3", "Film 3 is still in original Iterator";
71 $it->reset;
72 is $it->next->title, "Film 1", "Reset brings us to film 1 again";
73 is $it->next->title, "Film 2", "And 2 is still next";
95a70f01 74}
75
e60dc79f 76{
77 my $it = Film->retrieve_all;
78 is $it, $it->count, "iterator returns count as a scalar";
79 ok $it, "iterator returns true when there are results";
80}
81
82{
83 my $it = Film->search( Title => "something which does not exist" );
84 is $it, 0;
85 ok !$it, "iterator returns false when no results";
86}
d9bd5195 87
88done_testing;