The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!./perl -w

use Test; plan test => 10;
use Event;
require Event::generic;

my $src = Event::generic::Source->new;
ok $src;

my $w0 = Event->generic(parked => 1);
ok $w0;
eval { $w0->source(undef); };
ok $@, "";
eval { $w0->source($src); };
ok $@, "";
eval { $w0->source(123); };
ok $@, qr/not a reference/;
eval { $w0->source(\123); };
ok $@, qr/not a thing/;
eval { $w0->source($w0); };
ok $@, qr/Can't find event magic/;

sub second_cb($) {
	my($e) = @_;
	ok $e->data, 456;
	$e->w->stop;
}
$w0->cb(sub($) {
	my($e) = @_;
	ok $e->data, 123;
	Event->generic(source => $src, cb => \&second_cb);
	$e->w->cb(\&second_cb);
	$src->event(456);
});
$w0->start;
$src->event(123);
Event::loop;