File Coverage

blib/lib/POE/Test/Sequence.pm
Criterion Covered Total %
statement 29 35 82.8
branch 2 4 50.0
condition 2 3 66.6
subroutine 9 12 75.0
pod 4 4 100.0
total 46 58 79.3


line stmt bran cond sub pod time code
1             package POE::Test::Sequence;
2              
3 1     1   423 use warnings;
  1         2  
  1         61  
4 1     1   4 use strict;
  1         1  
  1         17  
5              
6 1     1   2 use Carp qw(croak);
  1         2  
  1         36  
7 1     1   4 use POE;
  1         1  
  1         38  
8              
9 1     1   3 use vars qw($VERSION);
  1         2  
  1         307  
10             $VERSION = '1.370'; # NOTE - Should be #.### (three decimal places)
11              
12             sub new {
13 1     1 1 150091 my ($class, %args) = @_;
14              
15 1         3 my $sequence = delete $args{sequence};
16 1 50       4 croak "sequence required" unless defined $sequence;
17              
18 1         6 return bless {
19             sequence => $sequence,
20             test_count => scalar( @$sequence ),
21             }, $class;
22             }
23              
24             sub next {
25 15     15 1 383 my ($self, $event, $parameter) = @_;
26              
27 15         19 my $expected_result = shift @{ $self->{sequence} };
  15         39  
28 15 50       35 unless (defined $expected_result) {
29 0         0 Test::More::fail(
30             "Got an unexpected result ($event, $parameter). Time to bye."
31             );
32 0         0 exit;
33             }
34              
35 15         30 my $next_action = pop @$expected_result;
36              
37 15         108 Test::More::note "Testing (@$expected_result)";
38              
39 15         8515 Test::More::is_deeply( [ $event, $parameter ], $expected_result );
40              
41 15   66 4   9929 return $next_action || sub { undef };
  4         22  
42             }
43              
44             sub test_count {
45 1     1 1 13 return $_[0]{test_count};
46             }
47              
48             sub create_generic_session {
49 0     0 1   my ($self) = @_;
50              
51             POE::Session->create(
52             inline_states => {
53 0     0     _start => sub { goto $self->next( $_[STATE], 0 ) },
54 0     0     _default => sub { goto $self->next( $_[ARG0], 0 ) },
55             }
56 0           );
57             }
58              
59             1;
60              
61             __END__