IO::Async::Test - Utility functions for use in test scripts


NAME

IO::Async::Test - Utility functions for use in test scripts

Back to Top


SYNOPSIS

 use Test::More tests => 1;
 use IO::Async::Test;
 use IO::Async::Loop::...
 my $loop = IO::Async::Loop::...->new( ... );
 testing_loop( $loop );
 my $result;
 $loop->do_something( 
    some => args,
    on_done => sub {
       $result = the_outcome;
    }
     );
 wait_for { defined $result };
 is( $result, what_we_expected, 'The event happened' );

Back to Top


DESCRIPTION

This module provides utility functions that may be useful when writing test scripts for code which uses IO::Async (as well as being used in the IO::Async test scripts themselves).

Test scripts are often synchronous by nature; they are a linear sequence of actions to perform, interspersed with assertions which check for given conditions. This goes against the very nature of IO::Async which, being an asynchronisation framework, does not provide a linear stepped way of working.

In order to write a test, the wait_for() function provides a way of synchronising the code, so that a given condition is known to hold, which would typically signify that some event has occured, the outcome of which can now be tested using the usual testing primitives.

Back to Top


FUNCTIONS

testing_loop( $loop )

Set the IO::Async::Loop object which the wait_for() function will loop on.

wait_for( $condfunc )

Repeatedly call the loop_once() method on the underlying loop (given to the testing_loop() function), until the given condition function callback returns true.

To guard against stalled scripts, if the loop indicates a timeout for 10 consequentive seconds, then an error is thrown.

Back to Top


AUTHOR

Paul Evans <leonerd@leonerd.org.uk>

Back to Top

 IO::Async::Test - Utility functions for use in test scripts