]> git.saurik.com Git - apple/security.git/blob - SecurityTests/regressions/inc/Test/Harness/Iterator.pm
Security-57740.1.18.tar.gz
[apple/security.git] / SecurityTests / regressions / inc / 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.";