Perl Script Snippets: Difference between revisions

From STRIDE Wiki
Jump to navigation Jump to search
No edit summary
Line 131: Line 131:
</source>
</source>


== Accessing compiler macro values (constants) at the time of source compilation ==
== Accessing compiler macro values (constants) ==
<source lang="c">
<source lang="c">
/* some compilation unit included in the STRIDE compilation process */
/* some compilation unit included in the STRIDE compilation process */

Revision as of 18:31, 28 January 2010

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};