initial import of Package::Variant
[p5sagit/Package-Variant.git] / t / 01simple.t
1 use strictures 1;
2 use Test::More qw(no_plan);
3
4 BEGIN {
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
21 BEGIN {
22   package LightSwitch;
23
24   use My::Role::OnOff;
25   use Moo;
26
27   with OnOff(name => 'lights');
28 }
29
30 my $lights = LightSwitch->new;
31
32 is($lights->lights, undef, 'Initial state');
33 is($lights->lights_on, 1, 'Turn on');
34 is($lights->lights, 1, 'On');
35 is($lights->lights_off, 0, 'Turn off');
36 is($lights->lights, 0, 'Off');