3 use Test::More tests => 5;
6 # This is copied directly from recipe 11
17 requires 'save_state', 'load_state';
23 package Restartable::ButUnreliable;
26 with 'Restartable' => {
36 $self->explode() if rand(1) > .5;
44 $self->explode() if rand(1) > .5;
49 package Restartable::ButBroken;
52 with 'Restartable' => { excludes => [ 'stop', 'start' ] };
67 # This is the actual tests
69 my $unreliable = Moose::Meta::Class->create_anon_class(
71 roles => [qw/Restartable::ButUnreliable/],
73 explode => sub { }, # nop.
74 'save_state' => sub { },
75 'load_state' => sub { },
78 ok $unreliable, 'made anon class with Restartable::ButUnreliable role';
79 can_ok $unreliable, qw/start stop/;
84 my $broken = Moose::Meta::Class->create_anon_class(
86 roles => [qw/Restartable::ButBroken/],
88 explode => sub { $cnt++ },
89 'save_state' => sub { },
90 'load_state' => sub { },
93 ok $broken, 'made anon class with Restartable::ButBroken role';
95 is $cnt, 1, '... start called explode';
97 is $cnt, 2, '... stop also called explode';