NAME

Test::Out - Test output from FILEHANDLE

SYNOPSIS

use Test::Out;
my $out = Test::Out->new( output => *STDOUT, tests => 4 );

# Or ...

my $out = Test::Out->new(tests => 4);
$out->redirect( output => *STDOUT );

## This will go to a place that your harness can see
$out->diag("Testing is* functions");

## But this will not be displayed but captured for test methods
$some->method_that_prints("This is a test\n");
$out->is_output("This is a test\n", "test 1");
$out->isnt_output("Han shot first", "test 2");

$out->diag("Testing regex functions");
CORE::print "A random number: @{[int rand 100]}\n";
$out->like_output(qr/random number: \d+/, "test 3");
$out->unlike_output(qr/i like pickles$/, "test 4");

$out->restore;

## This will be printed to STDOUT
print "Done.\n";

DESCRIPTION

Test out is another Test::Builder application that implements a few of the well known test facilities except the result of output to an IO::Handle is used. This could be used to capture output being printed to a file, but it's ideal for output being sent to STDOUT or STDERR.

See the SYNOPSIS for an example use.

AUTHOR

Lane Davis <cpan@upt.org>

FUNCTIONS

METHODS

$out->new(%options)

The Test::Out package constructor has several arguments, some required some optional

REQUIRED OPTIONS

The following options must be present in the hash passed to the constructor:

THE NUMBER OF PLANNED TESTS
tests => $Tests

The number of tests are simply passed to Test::Builder

NON-REQUIRED OPTIONS
THE OUTPUT YOU WISH TO TEST

Actually the output key is required, but you have the option of passing the key into the constructor or to the redirect method. This is useful if you have several segments of tests wrapped with redirect and restore.

output => *FH

The output argument is required and may contain either a FILEHANDLE typeglob, or

output => \*FHREF

The output key may also point to a typeglob reference

$out->redirect
$out->redirect(output => *FH)
$out->redirect(output => \*FH)

This method will be automatically invoked by the constructor if the output key is passed to new.

TESTS

$out->is_output(EXPR, NAME)
$out->was_output(EXPR, NAME)

Tests the last output buffer against EXPR. If there isn't a perfect string comparison the test fails. Pay particular attention to possible newlines in the last output. If you're unsure either paste the contents of $\ to your comparitor or use the like method.

The was_output method is an alias for is_output.

$out->isnt_output(EXPR, NAME)
$out->wasnt_output(EXPR, NAME)

This is the inverse of is_output, the negation of the comparing EXPR to the last printed output is performed.

The wasnt_output method is an alias for isnt_output.

$out->like_output(qr/STRING/, NAME)

This performs a test with the last output and a compiled regular expression as its first argument.

$out->unlike_output(qr/STRING/, NAME)

This performs a negated test with the last output and a compiled regular expression as its first argument.

$out->cmp_output(OP, EXPR, NAME)

This performs a comparison allowing you to pass your own perl binary operator as the first arugment (e.g., "==", "eq", etc).

$out->diag(@messages)

Prints a diagnostic message