POE::Component::IRC::Test::Plugin.3pm

Langue: en

Version: 2008-02-18 (mandriva - 01/05/08)

Section: 3 (Bibliothèques de fonctions)

NAME

POE::Component::IRC::Test::Plugin - Part of the POE::Component::IRC test-suite.

SYNOPSIS

  use Test::More tests => 16;
  BEGIN { use_ok('POE::Component::IRC') };
  BEGIN { use_ok('POE::Component::IRC::Test::Plugin') };
  use POE;
 
  my $self = POE::Component::IRC->spawn( );
 
  isa_ok ( $self, 'POE::Component::IRC' );
 
  POE::Session->create(
      inline_states => { _start => \&test_start, },
      package_states => [
          main => [ qw(irc_plugin_add irc_plugin_del) ],
      ],
  );
 
   $poe_kernel->run();
 
  sub test_start {
      my ($kernel, $heap) = @_[KERNEL, HEAP];
 
      $self->yield( 'register' => 'all' );
 
      my $plugin = POE::Component::IRC::Test::Plugin->new();
      isa_ok ( $plugin, 'POE::Component::IRC::Test::Plugin' );
   
      $heap->{counter} = 6;
      if ( !$self->plugin_add( 'TestPlugin' => $plugin ) ) {
          fail( 'plugin_add' );
          $self->yield( 'unregister' => 'all' );
          $self->yield( 'shutdown' );
      }
      
      return:
  }
 
  sub irc_plugin_add {
      my ($kernel, $heap, $desc, $plugin) = @_[KERNEL, HEAP, ARG0, ARG1];
 
      isa_ok ( $plugin, 'POE::Component::IRC::Test::Plugin' );
   
      if ( !$self->plugin_del( 'TestPlugin' ) ) {
          fail( 'plugin_del' );
          $self->yield( 'unregister' => 'all' );
          $self->yield( 'shutdown' );
      }
  
      return;
  }
 
  sub irc_plugin_del {
      my ($kernel, $heap, $desc, $plugin) = @_[KERNEL, HEAP, ARG0, ARG1];
 
      isa_ok ( $plugin, 'POE::Component::IRC::Test::Plugin' );
      $heap->{counter}--;
      if ( $heap->{counter} <= 0 ) {
          $self->yield( 'unregister' => 'all' );
          $self->yield( 'shutdown' );
      }
      else {
          if ( !$self->plugin_add( 'TestPlugin' => $plugin ) ) {
              fail( 'plugin_add' );
              $self->yield( 'unregister' => 'all' );
              $self->yield( 'shutdown' );
          }
      }
      
      return:
  }
 
 

DESCRIPTION

POE::Component::IRC::Test::Plugin is a very simple POE::Component::IRC plugin used to test that the plugin system is working correctly, as demonstrated in the SYNOPSIS.

CONSTRUCTOR

"new"
No arguments required, returns an POE::Component::IRC::Test::Plugin object.

AUTHOR

Chris ``BinGOs'' Williams

SEE ALSO

POE::Component::IRC