#!/usr/bin/perl use strict; use warnings; use Test::More 'no_plan'; use ok 'Devel::Events::Generator::ClassPublisher'; use Devel::Events::Handler::Callback; use Class::Publisher; { package Foo; use base qw/Class::Publisher/; sub new { bless { }, shift }; } my $foo = Foo->new; my @events; my $gen = Devel::Events::Generator::ClassPublisher->new( handler => Devel::Events::Handler::Callback->new(sub { push @events, [@_] }) ); $gen->subscribe( $foo ); $foo->notify_subscribers( oink => foo => 42 ); is_deeply( \@events, [ [ oink => ( generator => $gen, publisher => $foo, foo => 42 ) ], ], "event relayed", ); $gen->unsubscribe( $foo ); $foo->notify_subscribers( boink => bar => "blah" ); is( scalar(@events), 1, "unsubscribe" );