File Coverage

support/Test/Harness/Iterator.pm
Criterion Covered Total %
statement 14 20 70.0
branch 1 4 25.0
condition n/a
subroutine 4 5 80.0
pod 1 1 100.0
total 20 30 66.7


line stmt bran cond sub pod time code
1             package Test::Harness::Iterator;
2              
3 1     1   15 use strict;
  1         10  
  1         16  
4 1     1   14 use vars qw($VERSION);
  1         8  
  1         15  
5             $VERSION = 0.02;
6              
7             =head1 NAME
8            
9             Test::Harness::Iterator - Internal Test::Harness Iterator
10            
11             =head1 SYNOPSIS
12            
13             use Test::Harness::Iterator;
14             my $it = Test::Harness::Iterator->new(\*TEST);
15             my $it = Test::Harness::Iterator->new(\@array);
16            
17             my $line = $it->next;
18            
19             =head1 DESCRIPTION
20            
21             B<FOR INTERNAL USE ONLY!>
22            
23             This is a simple iterator wrapper for arrays and filehandles.
24            
25             =head2 new()
26            
27             Create an iterator.
28            
29             =head2 next()
30            
31             Iterate through it, of course.
32            
33             =cut
34              
35             sub new {
36 58     58 1 1963     my($proto, $thing) = @_;
37              
38 58         8585     my $self = {};
39 58 50       2948     if( ref $thing eq 'GLOB' ) {
    0          
40 58         644         bless $self, 'Test::Harness::Iterator::FH';
41 58         5211         $self->{fh} = $thing;
42                 }
43                 elsif( ref $thing eq 'ARRAY' ) {
44 0         0         bless $self, 'Test::Harness::Iterator::ARRAY';
45 0         0         $self->{idx} = 0;
46 0         0         $self->{array} = $thing;
47                 }
48                 else {
49 0         0         warn "Can't iterate with a ", ref $thing;
50                 }
51              
52 58         3687     return $self;
53             }
54              
55             package Test::Harness::Iterator::FH;
56             sub next {
57 87342     87342   2291927     my $fh = $_[0]->{fh};
58              
59             # readline() doesn't work so good on 5.5.4.
60 87342         409553675     return scalar <$fh>;
61             }
62              
63              
64             package Test::Harness::Iterator::ARRAY;
65             sub next {
66 0     0         my $self = shift;
67 0               return $self->{array}->[$self->{idx}++];
68             }
69              
70             "Steve Peters, Master Of True Value Finding, was here.";
71