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