Harness prove-switches.t for fixed bug 30952
[p5sagit/p5-mst-13.2.git] / lib / Test / Harness / Iterator.pm
1 package Test::Harness::Iterator;
2
3 use strict;
4 use vars qw($VERSION);
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     my($proto, $thing) = @_;
37
38     my $self = {};
39     if( ref $thing eq 'GLOB' ) {
40         bless $self, 'Test::Harness::Iterator::FH';
41         $self->{fh} = $thing;
42     }
43     elsif( ref $thing eq 'ARRAY' ) {
44         bless $self, 'Test::Harness::Iterator::ARRAY';
45         $self->{idx}   = 0;
46         $self->{array} = $thing;
47     }
48     else {
49         warn "Can't iterate with a ", ref $thing;
50     }
51
52     return $self;
53 }
54
55 package Test::Harness::Iterator::FH;
56 sub next {
57     my $fh = $_[0]->{fh};
58
59     # readline() doesn't work so good on 5.5.4.
60     return scalar <$fh>;
61 }
62
63
64 package Test::Harness::Iterator::ARRAY;
65 sub next {
66     my $self = shift;
67     return $self->{array}->[$self->{idx}++];
68 }
69
70 "Steve Peters, Master Of True Value Finding, was here.";