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