diff options
Diffstat (limited to 'testing/lib')
| -rw-r--r-- | testing/lib/Test/Irssi.pm | 29 | ||||
| -rw-r--r-- | testing/lib/Test/Irssi/Driver.pm | 40 | ||||
| -rw-r--r-- | testing/lib/Test/Irssi/Test.pm | 14 | 
3 files changed, 44 insertions, 39 deletions
| diff --git a/testing/lib/Test/Irssi.pm b/testing/lib/Test/Irssi.pm index 65e22b6..d776573 100644 --- a/testing/lib/Test/Irssi.pm +++ b/testing/lib/Test/Irssi.pm @@ -104,8 +104,9 @@ class Test::Irssi {            default => sub { [] },            traits => [qw/Array/],            handles => { -                      add_pending_test => 'push', -                      next_pending_test => 'pop', +                      add_pending_test  => 'push', +                      next_pending_test => 'shift', +                      tests_remaining   => 'count',                       }           ); @@ -130,7 +131,8 @@ class Test::Irssi {      sub new_test {          my ($self, $name, @params) = @_;          my $new = Test::Irssi::Test->new(name => $name, parent => $self); -        $self->add_pending_test, $new; +        $self->add_pending_test($new); +        return $new;      }      method _build_callback_obj { @@ -170,17 +172,14 @@ class Test::Irssi {      } -    sub log { -        my ($self, $msg) = @_; -        $self->_logfile_fh->say($msg); -    } - -    method run_test { +    method complete_test {          # put the completed one onto the completed pile          my $old_test = $self->active_test;          $self->add_completed_test($old_test); +    } +    method run_test {          # and make the next pending one active.          my $test = $self->next_pending_test;          $self->active_test($test); @@ -238,11 +237,17 @@ class Test::Irssi {      }      method summarise_test_results { -        foreach my $t_name (sort keys %{$self->tests}) { -            my $t_obj = $self->tests->{$t_name}; -            printf("Test %s\t\t-\t%s\n", $t_name, $t_obj->passed?"pass":"fail"); +        foreach my $test ($self->completed_tests) { +            my $name = $test->name; +            printf("Test %s\t\t-\t%s\n", $name, $test->passed?"pass":"fail");          }      } + +  sub log { +      my ($self, $msg) = @_; +      $self->_logfile_fh->say($msg); +  } +  }    __END__ diff --git a/testing/lib/Test/Irssi/Driver.pm b/testing/lib/Test/Irssi/Driver.pm index 80199ef..3b6000b 100644 --- a/testing/lib/Test/Irssi/Driver.pm +++ b/testing/lib/Test/Irssi/Driver.pm @@ -39,6 +39,7 @@ sub  START {         InputEvent   => "got_terminal_stdin",         Filter       => POE::Filter::Stream->new(),        ); +      $self->log("stdio options: " . dump(@stdio_options));      # Start the terminal reader/writer. @@ -75,7 +76,7 @@ sub STOP {      $self->parent->_logfile_fh->close();      say "\n\n"; -    $self->parent->summarise_test_results(); +    #$self->parent->summarise_test_results();  }  ### Handle terminal STDIN.  Send it to the background program's STDIN. @@ -161,32 +162,35 @@ sub testing_ready {      # begin by fetching a test from the pending queue.      $self->log("Starting to run tests");      $self->log("-" x 80); -    $self->parent->run_tests(); +    $self->parent->run_test; +} + +sub execute_test { +    my ($self, $heap, $kernel, $test) = @_[OBJECT,HEAP, KERNEL, ARG0]; +    # do some stuff here to evaluate it. + +    $test->evaluate_test; +  } -sub testing_complete { +sub test_complete {      my ($self, $kernel) = @_[OBJECT, KERNEL]; -    # make sure all tests have run to completion. -    my $done = 1; -    $self->log("Testing to see if we can quit: "); -    foreach my $test ($self->parent->all_tests) { -        if (not $test->complete) { -            $self->log("\t" . $test->name . " is not complete"); -            $done = 0; -        } -    } -    if ($done) { -        $kernel->yield('shutdown'); -    } else { -        # ??? -        $self->parent->active_test->resume_from_timer; + +    $self->parent->complete_test; + +    if ($self->parent->tests_remaining) { +        $self->parent->run_test;      } + +    # otherwise, we're done, and can shutdown. +    #$kernel->yield('shutdown'); +  }  sub timer_created {      my ($self, $heap, $kernel, $duration) = @_[OBJECT, HEAP, KERNEL, ARG0];      $kernel->delay(got_delay => $duration); -    $self->log("Timer created"); +    $self->log("Timer created for $duration");  }  sub timer_expired { diff --git a/testing/lib/Test/Irssi/Test.pm b/testing/lib/Test/Irssi/Test.pm index 45e9bb1..7ee511f 100644 --- a/testing/lib/Test/Irssi/Test.pm +++ b/testing/lib/Test/Irssi/Test.pm @@ -7,6 +7,7 @@ class Test::Irssi::Test {      use Test::Irssi;      use Test::Irssi::Driver;      use feature qw/say/; +    use Data::Dump qw/dump/;      has 'parent'        => ( @@ -167,17 +168,11 @@ class Test::Irssi::Test {          return $item;      } -    sub execute { -        my ($self) = @_; -        # set this as hte currently active test. -        $self->parent->active_test($self); -        $self->evaluate_test; -    } -      sub evaluate_test {          my ($self) = @_;          while (my $state = $self->get_next_state) { +            $self->log("Evaluating Test: " . dump($state));              # stimuli              if ( exists($state->{delay})) { @@ -208,11 +203,12 @@ class Test::Irssi::Test {              }          } + +        $poe_kernel->post(IrssiTestDriver => 'test_complete'); +          $self->complete(1);          $self->log("Test Execution Finished"); - -        $poe_kernel->post('IrssiTestDriver' => 'test_complete');      }      sub resume_from_timer { | 
