Introduce GOVERNANCE document and empty RESOLUTIONS file.
[dbsrgits/DBIx-Class.git] / t / cdbi / 21-iterator.t
CommitLineData
c0329273 1BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
83eef562 2use DBIx::Class::Optional::Dependencies -skip_all_without => 'cdbicompat';
3
95a70f01 4use strict;
4a233f30 5use warnings;
83eef562 6
95a70f01 7use Test::More;
8
50891152 9use lib 't/cdbi/testlib';
95a70f01 10use Film;
11
223b8fe3 12my $it_class = "DBIx::Class::ResultSet";
95a70f01 13
14my @film = (
6a3bf251 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' }),
95a70f01 21);
22
23{
6a3bf251 24 my $it1 = Film->retrieve_all;
25 isa_ok $it1, $it_class;
95a70f01 26
6a3bf251 27 my $it2 = Film->retrieve_all;
28 isa_ok $it2, $it_class;
95a70f01 29
6a3bf251 30 while (my $from1 = $it1->next) {
31 my $from2 = $it2->next;
32 is $from1->id, $from2->id, "Both iterators get $from1";
33 }
95a70f01 34}
35
36{
6a3bf251 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";
95a70f01 45}
46
95a70f01 47
48{
6a3bf251 49 my $it = Film->retrieve_all;
50 my @slice = $it->slice(2,4);
51 is @slice, 3, "correct slice size (array)";
52 is $slice[0]->title, "Film 3", "Film 3 first";
53 is $slice[2]->title, "Film 5", "Film 5 last";
95a70f01 54}
55
56{
6a3bf251 57 my $it = Film->retrieve_all;
58 my $slice = $it->slice(2,4);
59 isa_ok $slice, $it_class, "slice as iterator";
60 is $slice->count, 3,"correct slice size (array)";
61 is $slice->first->title, "Film 3", "Film 3 first";
62 is $slice->next->title, "Film 4", "Film 4 next";
63 is $slice->first->title, "Film 3", "First goes back to 3";
64 is $slice->next->title, "Film 4", "With 4 still next";
65 $slice->reset;
66 is $slice->next->title, "Film 3", "Reset brings us to film 3 again";
67 is $slice->next->title, "Film 4", "And 4 is still next";
95a70f01 68
6a3bf251 69 # check if the original iterator still works
70 is $it->count, 6, "back to the original iterator, is of right size";
71 is $it->first->title, "Film 1", "Film 1 first";
72 is $it->next->title, "Film 2", "Film 2 next";
73 is $it->first->title, "Film 1", "First goes back to 1";
74 is $it->next->title, "Film 2", "With 2 still next";
75 is $it->next->title, "Film 3", "Film 3 is still in original Iterator";
76 $it->reset;
77 is $it->next->title, "Film 1", "Reset brings us to film 1 again";
78 is $it->next->title, "Film 2", "And 2 is still next";
95a70f01 79}
80
e60dc79f 81{
82 my $it = Film->retrieve_all;
83 is $it, $it->count, "iterator returns count as a scalar";
84 ok $it, "iterator returns true when there are results";
85}
86
87{
88 my $it = Film->search( Title => "something which does not exist" );
89 is $it, 0;
90 ok !$it, "iterator returns false when no results";
91}
d9bd5195 92
93done_testing;