AnyEvent-IRC-Server

 view release on metacpan or  search on metacpan

t/05-list.t  view on Meta::CPAN

use AnyEvent::IRC::Server;
use AE;

plan tests => 4;

my $port = empty_port();

my $cv = AE::cv();
my $cv_john = AE::cv();

my $ircd = AnyEvent::IRC::Server->new(
    port         => $port,
    'servername' => 'fushihara.anyevent.server.irc',
    prepared_cb  => sub { },
);
$ircd->run();

my @responses;
my $irc = AnyEvent::IRC::Client->new();
$irc->reg_cb(
    registered => sub {
        ok 1, 'registered';
        $irc->send_srv(JOIN => '#foo');
        $irc->send_srv('TOPIC' => '#foo', 'hoge');
        $irc->send_srv(JOIN => '#bar');
        $irc->send_srv('TOPIC' => '#bar', 'fuga');
        $irc->send_srv(JOIN => '#baz');
        $irc->send_srv('LIST');
    },
    'irc_321' => sub {
        my ($irc, $raw) = @_;
        is_deeply $raw,
          {
            'params'  => ['testbot', 'Channel', 'Users :Name'],
            'command' => '321',
            'prefix'  => 'testbot!~testbot@fushihara.anyevent.server.irc'
          }, 'RPL_LISTSTART';
    },
    'irc_322' => sub {
        my ($irc, $raw) = @_;
        push @responses, join(" ", @{$raw->{params}});
    },
    'irc_323' => sub {
        my ($irc, $raw) = @_;
        is_deeply $raw,
          {
            'params'  => [ 'testbot', 'End of /LIST' ],
            'command' => '323',
            'prefix'  => 'testbot!~testbot@fushihara.anyevent.server.irc'
          }, 'RPL_LISTEND';
        $cv->send();
    },
);
$irc->connect(
    '127.0.0.1',
    $port,
    {
        nick     => 'testbot',
        user     => 'testbot',
        real     => 'test bot',
        password => 'kogaidan'
    }
);

$cv->recv();

is_deeply [ sort @responses ],
  [ 'testbot #bar 1 :fuga', 'testbot #baz 1 :', 'testbot #foo 1 :hoge' ], 'RPL_LIST';



( run in 1.924 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )