Dave Cross: Still Munging Data With Perl: Online event - Mar 27 Learn more

use strict;
use warnings FATAL => 'all';
use lib 't/inc';
use POE;
use Test::More tests => 8;
{
package MyPlugin;
sub new {
return bless { @_[1..$#_] }, $_[0];
}
sub PCI_register {
$_[1]->plugin_register($_[0], 'SERVER', qw(all));
return 1;
}
sub PCI_unregister {
return 1;
}
sub _default {
return PCI_EAT_NONE;
}
}
my $bot = POE::Component::IRC::State->spawn( plugin_debug => 1 );
POE::Session->create(
package_states => [
main => [ qw(
_start
irc_plugin_add
irc_plugin_del
)],
],
);
$poe_kernel->run();
sub _start {
$bot->yield(register => 'all');
my $plugin = POE::Component::IRC::Plugin::PlugMan->new();
isa_ok($plugin, 'POE::Component::IRC::Plugin::PlugMan');
if (!$bot->plugin_add('TestPlugin', $plugin)) {
fail('plugin_add failed');
$bot->yield('shutdown');
}
}
sub irc_plugin_add {
my ($sender, $name, $plugin) = @_[SENDER, ARG0, ARG1];
my $irc = $sender->get_heap();
return if $name ne 'TestPlugin';
isa_ok($plugin, 'POE::Component::IRC::Plugin::PlugMan');
ok($plugin->load('Test1', 'POE::Component::IRC::Test::Plugin'), 'PlugMan_load');
ok($plugin->reload('Test1'), 'PlugMan_reload');
ok($plugin->unload('Test1'), 'PlugMan_unload');
ok($plugin->load('Test2', MyPlugin->new()), 'PlugMan2_load');
ok($plugin->unload('Test2'), 'PlugMan2_unload');
if (!$irc->plugin_del('TestPlugin')) {
fail('plugin_del failed');
$irc->yield('shutdown' );
}
}
sub irc_plugin_del {
my ($sender, $name, $plugin) = @_[SENDER, ARG0, ARG1];
my $irc = $sender->get_heap();
return if $name ne 'TestPlugin';
isa_ok($plugin, 'POE::Component::IRC::Plugin::PlugMan');
$irc->yield('shutdown');
}