
Badger::Test - test module

use Badger::Test
tests => 8,
debug => 'My::Badger::Module Your::Badger::Module',
args => \@ARGV;
# -d in @ARGV will enable $DEBUG for My::Badger::Module
# and Your::Badger::Module, as well as exporting a $DEBUG
# flag here. -c will enable colour mode.
# e.g. $ perl t/test.t -d -c
ok( $bool, 'Test passes if $bool true' );
is( $one, $two, 'Test passes if $one eq $two' );
isnt( $one, $two, 'Test passes if $one ne $two' );
like( $one, qr/regex/, 'Test passes if $one =~ /regex/' );
unlike( $one, qr/regex/, 'Test passes if $one !~ /regex/' );
pass('This test always passes');
fail('This test always fails');

This module implements a simple test framework in the style of Test::Simple or Test::More. As well as the usual plan(), ok(), is(), isnt() and other subroutines you would expect to find, it also implements a number of import hooks to enable certain Badger-specific features.

The Badger::Test module exports the following subroutines, similar to those found in Test::Simple or Test::More.
Specify how many tests you plan to run. You can also sepcify this using the tests import hook.
plan(1);
Report on the success or failure of a test:
ok(1, 'This is good');
ok(0, 'This is bad');
Test if the first two arguments are equal.
is($this, $that, "This and that are equal");
Test if the first two arguments are not equal.
isnt($this, $that, "This and that are equal");
Test if the first argument is matched by the regex passed as the second argument.
like($this, qr/like that/i, "This and that are alike");
Test if the first argument is not matched by the regex passed as the second argument.
unlike($this, qr/like that/i, "This and that are unalike");
Pass a test.
pass('Module Loaded');
Fail a test.
fail('Stonehenge crushed by a dwarf');
Skip all tests. This should be called instead of plan()
skip_all("We don't have that piece of scenery any more");
Skip a number of tests.
skip_some(11, "Hugeness of object understated");
Skip any remaining tests.
skip_rest("Should have made a big thing out of it");

The Badger::Test module defines the following class methods to access and/or configure the test framework.
This class method can be used to set the number of tests. It does the same thing as the plan() subroutine.
Badger::Test->tests(42);
Method to get or set the name of the backend test manager object class. This is defined in the $MANAGER package variable. The default manager is Badger::Test::Manager.
# defining a custom manager class
Badger::Test->manager('My::Test::Manager');
Prints a summary of the test results. Delegates to Badger::Test::Manager method of the same name.
Method to enable or disable colour output.
Badger::Test->colour(1); # technicolor
Badger::Test->colour(0); # monochrome
An alias for colour().
This method parses the arguments looking for -d to enable debugging, -c to enable colour output or -s to print a test summary. This method is called by the args import hook. Arguments can also be passed as a reference to a list, in which case any -c, -d or -s arguments at the start will be removed.
Badger::Test->args(@ARGV); # either
Badger::Test->args(\@ARGV); # or
This method can be called to define one or more modules that should have their $DEBUG flag enabled when running in debug mode (i.e. with the -d command line option). This method is called by the debug import hook.
Badger::Test->debug('My::Badger::Module');
Multiple modules can be specified in a single string or by reference to a list.
# whitespace-delimited string
Badger::Test->debug('My::Badger::Module Your::Badger::Module');
# list reference
Badger::Test->debug(['My::Badger::Module', 'Your::Badger::Module']);
This method enables or disables debugging for all modules named in the $DEBUG list. It also sets the $DEBUGGING flag.
Badger::Test->debugging(1); # enable debugging
Badger::Test->debugging(0); # disable debugging

The following import hooks are provided to allow you to load and configure the Badger::Test module in one fell swoop.
Specify the number of tests. Does the same thing as calling the plan() subroutine or tests() class method.
use Badger::Test
tests => 42;
An import hook to define a different test manager module. See the manager() method.
use My::Test::Manager;
use Badger::Test
manager => 'My::Test::Manager';
An import hook to enable colour mode. See the colour() method.
use Badger::Test
colour => 1;
An alias for colour
This import hook can be used to feed the command line arguments to the args() method so that -d and -c enable debugging and colour moes, respectively.
use Badger::Test
args => \@ARGV;
An import hook to associate a list of module with our debugging mode. See the debug() method.
use Badger::Test
debug => 'My::Badger::Module Your Badger::Module',
args => \@ARGV;

This package variable stores the name of the manager class, Badger::Test::Manager by default.
The $DEBUG package variable holds the name(s) of module(s) for which debugging should be enabled, as defined via the debug() method.
Flag set true or false to indicate debugging mode is enabled or disabled. As set by the debugging() method.

Andy Wardley http://wardley.org/

Copyright (C) 1996-2008 Andy Wardley. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
