turned simple moo-role test into a separate use case test file
[p5sagit/Package-Variant.git] / t / 20moo-param-role.t
CommitLineData
236a4386 1use strictures 1;
2use Test::More qw(no_plan);
3
4BEGIN {
5 package My::Role::OnOff;
6
7 use Package::Variant
8 importing => { 'Moo::Role' => [] },
9 subs => [ qw(has before after around) ];
10
11 sub make_variant {
12 my ($me, $into, %args) = @_;
13 my $name = $args{name};
14 has $name => (is => 'rw');
15 install "${name}_on" => sub { shift->$name(1); };
16 install "${name}_off" => sub { shift->$name(0); };
17 }
18 $INC{"My/Role/OnOff.pm"} = __FILE__;
19}
20
21BEGIN {
22 package LightSwitch;
23
24 use My::Role::OnOff;
25 use Moo;
26
27 with OnOff(name => 'lights');
28}
29
30my $lights = LightSwitch->new;
31
32is($lights->lights, undef, 'Initial state');
33is($lights->lights_on, 1, 'Turn on');
34is($lights->lights, 1, 'On');
35is($lights->lights_off, 0, 'Turn off');
36is($lights->lights, 0, 'Off');