parrotcode: Functions for testing Parrot and language implementations | |
Contents | Perl Modules |
Parrot::Test - Functions for testing Parrot and language implementations
Set the number of tests to be run like this:
use Parrot::Test tests => 8;
Write individual tests like this:
pasm_output_is(<<'CODE', <<'OUTPUT', "description of test");
print "this is ok\n"
end
CODE
this is ok
OUTPUT
This module provides various Parrot-specific test functions.
The parameter $language
is the language of the code. The parameter $code
is the code that should be executed or transformed. The parameter $expected
is the expected result. The parameter $unexpected
is the unexpected result. The parameter $description
should describe the test.
Any optional parameters can follow. For example, to mark a test as a TODO test (where you know the implementation does not yet work), pass:
todo => 'reason to consider this TODO'
at the end of the argument list. Valid reasons include bug
, unimplemented
, and so on.
language_output_is( $language, $code, $expected, $description)
language_output_like( $language, $code, $expected, $description)
language_output_isnt( $language, $code, $expected, $description)
pasm_output_isnt($code, $unexpected, $description)
or output_isnt($code, $unexpected, $description)
pasm_output_is($code, $expected, $description)
or output_is($code, $expected, $description)
pasm_output_like($code, $expected, $description)
or output_like($code, $expected, $description)
pasm_output_isnt($code, $unexpected, $description)
or output_isnt($code, $unexpected, $description)
past_output_is($code, $expected, $description)
past_output_like($code, $expected, $description)
past_output_isnt($code, $unexpected, $description)
pir_output_is($code, $expected, $description)
pir_output_like($code, $expected, $description)
pir_output_isnt($code, $unexpected, $description)
pbc_output_is($code, $expected, $description)
pbc_output_like($code, $expected, $description)
pbc_output_isnt($code, $unexpected, $description)
pir_2_pasm_is($code, $expected, $description)
pir_2_pasm_like($code, $expected, $description)
pir_2_pasm_isnt($code, $unexpected, $description)
c_output_is($code, $expected, $description)
c_output_like($code, $expected, $description)
c_output_isnt($code, $unexpected, $description)
example_output_is( $example_fn, $expected )
$example_fn
and runs language_output_is().skip($why, $how_many)
SKIP: { ... }
block to indicate why and how many test are being skipped. Just like in Test::More.run_command($command, %options)
STDOUT filehandle to redirect STDOUT to
STDERR filehandle to redirect STDERR to
CD directory to run the command in
# equivalent to "cd some_dir && make test"
run_command("make test", CD => "some_dir");
slurp_file($file_name)
generate_code
should be renamed and be published to everybody who needs to generate files.
Hey! The above document had some coding errors, which are explained below:
|