Parrot::Test::PGE - test functions for Perl 6 Grammar Engine
In a .t file:
use Parrot::Test tests => 2; use Parrot::Test::PGE; p6rule_is('abc', '^abc', 'BOS abc'); p6rule_is(" int argc ", [ [ type => 'int | double | float | char' ], [ ident => '\w+' ], [ _MASTER => ':w<type> <ident>' ], ], "simple subrules test"); p6rule_isnt('abc', '^bc', 'BOS bc'); p6rule_like('abcdef', 'bcd', qr/0: <bcd @ 1>/, '$0 capture');
Parrot::Test::PGE provides functions for testing the grammar engine and Perl 6 rules.
p6rule_is($target, $pattern, $description, @todo)
Runs the target string against the Perl 6 pattern, passing the test if they match. Note that patterns should be specified as strings and without leading/trailing pattern delimiters.
(Hint: if you try using qr// for the $pattern then you're misreading what this does.)
subrules: In addition to a simple scalar string, the pattern can be a reference to an array of arrays. Containing subrules that refer to each other. In this form:
[ [ name1 => 'pattern 1' ], [ name2 => 'pattern 2' ], [ name3 => '<name1> pattern 3' ], [ _MASTER => '<name1> <name2> <name3>' ], ],
The last rule, labelled with _MASTER, is the rule that your target string will be matched against. The 'outer rule' if you will.
p6rule_isnt($target, $pattern, $description, @todo)
Runs the target string against the Perl 6 pattern, passing the test if they do not match. The same pattern argument syntax above applies here.
p6rule_like($target, $pattern, $expected, $description, @todo)
Runs the target string against the Perl 6 pattern, passing the test if the output produced by the test code matches the $expected parameter. Note that $expected is a Perl 5 pattern.
$expected
p6rule_error_like($target, $pattern, $expected, $description, @todo)
Like p6rule_like(), but expects Parrot/PGE to exit with an error.
p6rule_like()
p6rule_throws($pattern, $expected, $description, @todo)
Compiles the Perl 6 pattern, catching any thrown exceptions. The test passes if the pattern throws an exception and the exception message matches the $expected parameter. Note that $expected is a Perl 5 pattern.
pgeglob_is($target, $pattern, $description, @todo)
pgeglob_isnt($target, $pattern, $description, @todo)
pgeglob_like($target, $pattern, $expected, $description, @todo)
Patrick R. Michaud, pmichaud@pobox.com 18-Nov-2004
To install Parrot::Op, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Parrot::Op
CPAN shell
perl -MCPAN -e shell install Parrot::Op
For more information on module installation, please visit the detailed CPAN module installation guide.