parrotcode: Parrot extension for testing modules | |
Contents | Libraries |
Test::More - Parrot extension for testing modules
# load this library
load_bytecode 'library/Test/More.pir'
# get the testing functions
.local pmc plan
.local pmc diag
.local pmc ok
.local pmc is
.local pmc is_deeply
.local pmc like
plan = find_global 'Test::More', 'plan'
diag = find_global 'Test::More', 'diag'
ok = find_global 'Test::More', 'ok'
is = find_global 'Test::More', 'is'
is_deeply = find_global 'Test::More', 'is_deeply'
like = find_global 'Test::More', 'like'
# set a test plan
plan( 12 )
# run your tests
ok( 1 )
ok( 0, 'failing test with diagnostic' )
is( 100, 100 )
is( 200, 100, 'failing integer compare with diagnostic' )
is( 1.001, 1.001, 'passing float compare with diagnostic' )
is( 8.008, 4.004 )
is( 'foo', 'foo', 'passing string compare with diagnostic' )
is( 'foo', 'bar', 'failing string compare with diagnostic' )
is( some_pmc, another_pmc, 'pmc comparison uses "eq" op' )
diag( 'this may take a while' )
is_deeply( some_deep_pmc, another_deep_pmc, 'deep structure comparison' )
like( 'foo', 'f o**{2}', 'passing regex compare with diagnostic' )
Test::More
is a pure-Parrot library for testing modules. It provides the ok()
, is()
, is_deeply()
, and like()
comparison functions for you. It also provides the plan()
and diag()
helper functions. It uses Test::Builder
, a simple, single backend for multiple test modules to use within your tests.
This class defines the following functions:
plan( number_or_no_plan )
no_plan
. This will throw an exception if you have already declared a plan or if you pass an invalid argument.ok( passed, description )
passed
, recording it with the optional test description in description
.nok( passed, description )
passed
, recording it with the optional test description in description
.is( left, right, description )
left
and right
, passing if they are equal and failing otherwise. This will report the results with the optional test description in description
.eq
opcode for comparison.left
as the proper type for the comparison, converting any numeric arguments to floats. Note that there is a hard-coded precision check to avoid certain rounding errors. It's not entirely robust, but it's not completely awful either.diag( diagnostic )
diagnostic
to the screen, without affecting test comparisons.is_deeply( left, right, description )
left
and right
. If data structures are passed, is_deeply
does a deep comparison by walking each structure. It passes if they are equal and fails otherwise. This will report the results with the optional test description in description
.like( target, pattern, description )
target
to the pattern passed as pattern
. It passes if the pattern matches and fails otherwise. This will report the results with the optional test description in description
.skip( how_many, why )
Written and maintained by chromatic, chromatic at wgz dot org
, based on the Perl 6 port he wrote, based on the original Perl 5 version he wrote with ideas from Michael G. Schwern. Please send patches, feedback, and suggestions to the Perl 6 internals mailing list.
Copyright (C) 2005 - 2006 The Perl Foundation.
|