-
Notifications
You must be signed in to change notification settings - Fork 212
/
foreach.t
43 lines (37 loc) · 850 Bytes
/
foreach.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use strict;
use warnings;
use Test::More;
use Plack::Util;
{
package Foo;
sub new { bless {}, shift }
}
do {
open my $fh, '>', \my $data;
for my $body ('error', \'error', qr//, +{}, sub {}, Foo->new(), $fh) {
eval {
Plack::Util::foreach($body, sub {});
};
like $@, qr/Can't (call|locate object) method "getline"/;
}
};
do {
my @x = (0, 1);
Plack::Util::foreach([0, 1], sub { my $line = shift; is($line, $x[$line]) });
};
{
package Bar;
sub new { bless { i => 0 }, shift }
my @x = (2, 3);
sub getline {
my $self = shift;
$x[$self->{i}++];
}
sub current { $x[shift->{i}-1] }
sub close { ::ok(1, 'close') }
}
do {
my $bar = Bar->new;
Plack::Util::foreach($bar, sub { my $line = shift; is($line, $bar->current) });
};
done_testing;