1# IO::Callback 1.08 t/iostring-para.t
2# This is t/para.t from IO::String 1.08, adapted to IO::Callback.
3
4use strict;
5use warnings;
6
7use Test::More tests => 9;
8use Test::NoWarnings;
9
10use IO::Callback;
11
12my $fh;
13my $str;
14my $callback_state;
15
16sub reset_test {
17    $str = shift;
18    $callback_state = 0;
19    $fh = IO::Callback->new("<", \&callback);
20}
21
22sub callback {
23    if ($callback_state == 0) {
24        $callback_state = 1;
25        return $str;
26    } elsif ($callback_state == 1) {
27        $callback_state = 2;
28        return;
29    } else {
30        die "callback called again after eof";
31    }
32}
33
34reset_test(<<EOT);
35a
36
37a
38b
39
40a
41b
42c
43
44
45
46a
47b
48c
49d
50EOT
51
52$/ = "";
53
54is(<$fh>, "a\n\n");
55is(<$fh>, "a\nb\n\n");
56is(<$fh>, "a\nb\nc\n\n");
57is(<$fh>, "a\nb\nc\nd\n");
58is(<$fh>, undef);
59
60reset_test(<<EOT);
61a
62b
63
64
65
66
67
68
69EOT
70
71is(<$fh>, "a\nb\n\n");
72is(<$fh>, undef);
73is(<$fh>, undef);
74
75