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 $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.
$code
$expected
$unexpected
$description
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.
bug
unimplemented
pasm_output_is($code, $expected, $description)
output_is($code, $expected, $description)
Runs the Parrot Assembler code and passes the test if a string comparison of the output with the expected result it true.
pasm_output_like($code, $expected, $description)
output_like($code, $expected, $description)
Runs the Parrot Assembler code and passes the test if the output matches the expected result.
pasm_output_isnt($code, $unexpected, $description)
output_isnt($code, $unexpected, $description)
Runs the Parrot Assembler code and passes the test if a string comparison of the output with the unexpected result is false.
pir_output_is($code, $expected, $description)
Runs the PIR code and passes the test if a string comparison of output with the expected result is true.
pir_output_like($code, $expected, $description)
Runs the PIR code and passes the test if output matches the expected result.
pir_output_isnt($code, $unexpected, $description)
Runs the PIR code and passes the test if a string comparison of the output with the unexpected result is false.
pbc_output_is($code, $expected, $description)
Runs the Parrot Bytecode and passes the test if a string comparison of output with the expected result is true.
pbc_output_like($code, $expected, $description)
Runs the Parrot Bytecode and passes the test if output matches the expected result.
pbc_output_isnt($code, $unexpected, $description)
Runs the Parrot Bytecode and passes the test if a string comparison of output with the unexpected result is false.
pir_2_pasm_is($code, $expected, $description)
Compile the Parrot Intermediate Representation and generate Parrot Assembler Code. Pass if the generated PASM is $expected.
pir_2_pasm_like($code, $expected, $description)
Compile the Parrot Intermediate Representation and generate Parrot Assembler Code. Pass if the generated PASM matches $expected.
pir_2_pasm_isnt($code, $unexpected, $description)
Compile the Parrot Intermediate Representation and generate Parrot Assembler Code. Pass unless the generated PASM is $expected.
c_output_is($code, $expected, $description)
Compiles and runs the C code, passing the test if a string comparison of output with the expected result it true.
c_output_like($code, $expected, $description)
Compiles and runs the C code, passing the test if output matches the expected result.
c_output_isnt($code, $unexpected, $description)
Compiles and runs the C code, passing the test if a string comparison of output with the unexpected result is false.
skip($why, $how_many)
Use within a SKIP: { ... } block to indicate why and how many test are being skipped. Just like in Test::More.
SKIP: { ... }
run_command($command, %options)
Run the given $command in a cross-platform manner.
%options include...
STDOUT filehandle to redirect STDOUT to STDERR filehandle to redirect STDERR to CD directory to run the command in
For example:
# equivalent to "cd some_dir && make test" run_command("make test", CD => "some_dir");
slurp_file($file_name)
Read the whole file $file_name and return the content as a string.
generate_code should be renamed and be published to everybody who needs to generate files.
generate_code
To install Ruby, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Ruby
CPAN shell
perl -MCPAN -e shell install Ruby
For more information on module installation, please visit the detailed CPAN module installation guide.