Perl Script Snippets
Jump to navigation
Jump to search
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};