Perl Script Snippets: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
Below are some brief examples of script test modules that use the [[Perl Script APIs]] for STRIDE. Most of these examples are incomplete and are only intended to give a quick overview of how this API can be used. | |||
Below are some brief examples of script test modules that use the [[Perl | |||
With any perl module that you write, we recommend that you perform a quick syntax check before attempting to execute the module using the STRIDE runner. Syntax checking with warnings is easily accomplished by running with the <tt>-cw</tt> option, e.g.: | With any perl module that you write, we recommend that you perform a quick syntax check before attempting to execute the module using the STRIDE runner. Syntax checking with warnings is easily accomplished by running with the <tt>-cw</tt> option, e.g.: |
Revision as of 22:13, 8 February 2010
Below are some brief examples of script test modules that use the Perl Script APIs for STRIDE. Most of these examples are incomplete and are only intended to give a quick overview of how this API can be used.
With any perl module that you write, we recommend that you perform a quick syntax check before attempting to execute the module using the STRIDE runner. Syntax checking with warnings is easily accomplished by running with the -cw option, e.g.:
perl -cw MyTests.pm
This will compile the perl script without running it, and it will emit any syntax errors that are found.
Canonical module format
use strict;
use warnings;
package MyTests;
use base qw(STRIDE::Test);
use STRIDE::Test;
sub test_one : Test
{
ASSERT_TRUE(1);
}
sub test_two : Test
{
ASSERT_TRUE(0);
}
1;
Subroutine attributes to declare test methods and fixtures
sub a_test : Test {
# test method
}
sub startup_method : Test(startup) {
# startup fixturing
}
sub shutdown_method : Test(shutdown) {
# shutdown fixturing
}
sub setup_method : Test(setup) {
# setup fixturing
}
sub teardown_method : Test(teardown) {
# teardown fixture
}
Test module including POD documentation
package MyTests;
use base qw(STRIDE::Test);
use STRIDE::Test;
=head1 NAME
MyTests - example tests
=head1 DESCRIPTION
This is MyTests_1, a deeply funky piece of Perl code.
=head1 METHODS
=cut
=head2 test_one
this is a simple passing test.
=cut
sub test_one : Test
{
ASSERT_TRUE(1);
}
=head2 test_two
this is a simple passing test.
=cut
sub test_two : Test
{
ASSERT_TRUE(0);
}
1;
Simple expectation test
sub sync_exact : Test {
my $h = TestPointSetup(
order => TEST_POINT_EXPECT_ORDERED,
expected => [
"point a",
"point b",
"point c"
],
unexpected => [ TEST_POINT_EVERYTHING_ELSE ]
);
#...start source under test, if necessary
# use Check if the events have all happened by the time
# you validate the test points. Otherwise use Wait with
# a reasonable timeout value.
$h->Check();
}
Invoking a function on the target
Blocking syntax (blocks until function returns)
my $retval = Functions->foo(1, "input string");
Functions->bar();
Non-blocking syntax (return immediately, function continues to execute on device)
Functions->{non_blocking} = 1;
Functions->foo(1, "input string");
my $retval = Functions->WaitReturn('foo', 1000); #waits up to one second for function to return
Accessing compiler macro values (constants)
/* some compilation unit included in the STRIDE compilation process */
#define SOME_DEFINED_VALUE 42
my $value = Constants->{SOME_DEFINED_VALUE};