The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings FATAL => 'all';
use POE;
use POE::Component::IRC;
use Socket qw(unpack_sockaddr_in);
use Test::More tests => 4;

my $bot = POE::Component::IRC->spawn();

POE::Session->create(
    package_states => [
        main => [qw(
            _start
            irc_registered
            irc_delay_set
            irc_delay_removed
        )],
    ],
);

$poe_kernel->run();

sub _start {
    $bot->yield(register => 'all');
}

sub irc_registered {
  my ($heap, $irc) = @_[HEAP, ARG0];

  $heap->{alarm_id} =
    $irc->delay( [ connect => {
        nick    => 'TestBot',
        server  => '127.0.0.1',
        port    => 6667,
    } ], 25 );

    ok($heap->{alarm_id}, 'Set alarm');
}

sub irc_delay_set {
    my ($heap, $event, $alarm_id) = @_[HEAP, STATE, ARG0];

    is($alarm_id, $heap->{alarm_id}, $_[STATE]);
    my $opts = $bot->delay_remove($alarm_id);
    ok($opts, 'Delay Removed');
}

sub irc_delay_removed {
    my ($heap, $alarm_id) = @_[HEAP, ARG0];

    is($alarm_id, $heap->{alarm_id}, $_[STATE] );
    $bot->yield('shutdown');
}