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.6


line stmt bran cond sub pod time code
1             package Test::Harness::Iterator;
2              
3 1     1   5 use strict;
  1         1  
  1         134  
4 1     1   6 use vars qw($VERSION);
  1         2  
  1         372  
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
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 222 my($proto, $thing) = @_;
37              
38 58         459 my $self = {};
39 58 50       581 if( ref $thing eq 'GLOB' ) {
    0          
40 58         468 bless $self, 'Test::Harness::Iterator::FH';
41 58         678 $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         294 return $self;
53             }
54              
55             package Test::Harness::Iterator::FH;
56             sub next {
57 64887     64887   88761 my $fh = $_[0]->{fh};
58              
59             # readline() doesn't work so good on 5.5.4.
60 64887         93653344 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.";