The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More;
use strict; use warnings;

use POEx::IRC::Backend::Listener;

{ package
    POE::Wheel; use strict; use warnings;
  sub new { bless [], shift }
  sub ID  { 1234 }
}

my $listener = POEx::IRC::Backend::Listener->new(
  protocol => 4,
  addr  => '127.0.0.1',
  port  => 1234,
  wheel => POE::Wheel->new,
  args  => +{ foo => 1 },
);

# consumed methods

# Role::HasEndpoint
cmp_ok $listener->addr, 'eq', '127.0.0.1', 'addr ok';
cmp_ok $listener->port, '==', 1234, 'port ok';

# Role::HasWheel
isa_ok $listener->wheel, 'POE::Wheel';
cmp_ok $listener->wheel_id, '==', 1234, 'wheel/wheel_id ok';

# Role::Socket
ok $listener->has_args, 'has_args ok';
is_deeply $listener->args, +{ foo => 1 }, 'args ok';
cmp_ok $listener->protocol, '==', 4, 'protocol ok';
cmp_ok $listener->ssl, '==', 0, 'default ssl ok';

# class methods

cmp_ok $listener->idle, '==', 180, 'idle attr defaults to 180';
$listener->set_idle(60);
cmp_ok $listener->idle, '==', 60, 'idle attr settable';

done_testing