# vim600: set syn=perl :
use strict;
use warnings;
use Test::More
tests => 35;
# qw(no_plan);
BEGIN {
use_ok('IO::Capture::Stdout::Extended');
use lib("./t/testlib");
use_ok('_Auxiliary', qw(:all));
};
my ($capture, $matches, @matches, %matches, $matchesref, $regex );
my ($predicted, @predicted);
my ($screen_lines, @all_screen_lines);
$capture = IO::Capture::Stdout::Extended->new();
isa_ok($capture, 'IO::Capture::Stdout::Extended');
can_ok('IO::Capture::Stdout::Extended', qw|
grep_print_statements
statements
matches
matches_ref
|);
$capture->start;
print_fox();
$capture->stop;
$matches = $capture->grep_print_statements("fox");
is($capture->grep_print_statements("fox"), 2,
"correct no. of print statements grepped");
%matches = map { $_, 1 } $capture->grep_print_statements("fox");
is(keys %matches, 2, "correct no. of print statements grepped");
ok($matches{'The quick brown fox jumped over ... '},
'print statement correctly grepped');
ok($matches{'The quick red fox jumped over ... '},
'print statement correctly grepped');
$screen_lines = $capture->all_screen_lines;
is($screen_lines, 1, "correct no. of lines printed to screen");
$capture->start;
print_fox_long();
$capture->stop;
$matches = $capture->grep_print_statements("fox");
is($capture->grep_print_statements("fox"), 3,
"correct no. of print statements grepped");
$screen_lines = $capture->all_screen_lines;
is($screen_lines, 2, "correct no. of lines printed to screen");
@all_screen_lines = $capture->all_screen_lines;
is($all_screen_lines[0],
"The quick brown fox jumped over ... a less adept fox",
"line correctly printed to screen");
is($all_screen_lines[1],
"The quick red fox jumped over ... the garden wall",
"line correctly printed to screen");
$capture->start;
print_fox_trailing();
$capture->stop;
$screen_lines = $capture->all_screen_lines;
is($screen_lines, 2, "correct no. of lines printed to screen");
@all_screen_lines = $capture->all_screen_lines;
is($all_screen_lines[1],
"The quick red fox jumped over ... ",
"line correctly printed to screen");
$capture->start;
print_fox_blank();
$capture->stop;
is($capture->statements, 4,
"number of print statements is correct");
$screen_lines = $capture->all_screen_lines;
is($screen_lines, 3, "correct no. of lines printed to screen");
@all_screen_lines = $capture->all_screen_lines;
is($all_screen_lines[1],
"",
"line correctly printed to screen");
$capture->start;
print_fox_empty();
$capture->stop;
is($capture->statements, 4,
"number of print statements is correct");
$screen_lines = $capture->all_screen_lines;
is($screen_lines, 2, "correct no. of lines printed to screen");
@all_screen_lines = $capture->all_screen_lines;
is($all_screen_lines[1],
"The quick red fox jumped over ... ",
"line correctly printed to screen");
$capture->start;
print_greek();
$capture->stop;
is($capture->statements, 4,
"number of print statements is correct");
$capture->start;
print_greek_long();
$capture->stop;
is($capture->statements, 8,
"number of print statements is correct");
$screen_lines = $capture->all_screen_lines;
is($screen_lines, 4, "correct no. of lines printed to screen");
@all_screen_lines = $capture->all_screen_lines;
is($all_screen_lines[0],
"alpha",
"line correctly printed to screen");
is($all_screen_lines[1],
"beta",
"line correctly printed to screen");
my @week = (
[ qw| Monday Lundi Lunes | ],
[ qw| Tuesday Mardi Martes | ],
[ qw| Wednesday Mercredi Miercoles | ],
[ qw| Thursday Jeudi Jueves | ],
[ qw| Friday Vendredi Viernes | ],
[ qw| Saturday Samedi Sabado | ],
[ qw| Sunday Dimanche Domingo | ],
);
$capture->start;
print_week(\@week);
$capture->stop;
$regex = qr/English:.*?French:.*?Spanish:/s;
eval { $capture->matches() };
like($@, qr/^Not enough arguments:/,
"detected missing regex variable as argument to matches()")
|| print STDERR "$@\n";
is($capture->matches($regex), 7,
"correct number of forms printed to screen");
@matches = $capture->matches($regex);
$predicted = "English: Monday\nFrench: Lundi\nSpanish:";
is($matches[0], $predicted, "first form matches test portion");
$matchesref = $capture->matches_ref($regex);
is(${$matchesref}[0], $predicted, "first form matches test portion");
$regex = qr/French:\s+(.*?)\n/s;
@predicted = qw| Lundi Mardi Mercredi Jeudi
Vendredi Samedi Dimanche |;
ok(eq_array( [ $capture->matches($regex) ], \@predicted ),
"all predicted matches found");
$capture->start;
print_fox_double();
$capture->stop;
is($capture->statements, 4,
"number of print statements is correct");
$screen_lines = $capture->all_screen_lines;
is($screen_lines, 3, "correct no. of lines printed to screen");
# above test fails because one of the print statements
# contains two newlines
# bug in CPAN!!!
$capture->start;
print_greek_double();
$capture->stop;
is($capture->statements, 2,
"number of print statements is correct");
$screen_lines = $capture->all_screen_lines;
is($screen_lines, 5, "correct no. of lines printed to screen");
# above test fails because one of the print statements
# contains two newlines
# bug in CPAN!!!
##### subroutines containing dummy print statements #####