4 use Package::Variant ();
10 use Exporter 'import';
11 our @EXPORT_OK = qw( declare );
12 sub declare { push @DECLARED, [@_] }
13 $INC{'TestSugar.pm'} = __FILE__;
19 importing => { 'TestSugar' => [qw( declare )] },
20 subs => [qw( declare )];
22 my ($class, $target, @args) = @_;
23 ::ok(__PACKAGE__->can('install'), 'install() is available')
24 or ::BAIL_OUT('install() subroutine was not exported!');
25 ::ok(__PACKAGE__->can('declare'), 'declare() import is available')
26 or ::BAIL_OUT('proxy declare() subroutine was not exported!');
27 declare target => $target;
28 declare args => [@args];
29 declare class => $class->_test_class_method;
30 install target => sub { $target };
31 install args => sub { [@args] };
33 sub _test_class_method {
36 $INC{'TestVariable.pm'} = __FILE__;
45 ok defined($variant), 'new variant is a defined value';
46 ok length($variant), 'new variant has length';
47 is $variant->target, $variant, 'target was new variant';
48 is_deeply $variant->args, [3..7], 'correct arguments received';
50 is_deeply shift(@DECLARED), [target => $variant],
51 'target passed via proxy';
52 is_deeply shift(@DECLARED), [args => [3..7]],
53 'arguments passed via proxy';
54 is_deeply shift(@DECLARED), [class => 'TestVariable'],
55 'class method resolution';
56 is scalar(@DECLARED), 0, 'proxy sub called right amount of times';
58 use TestVariable as => 'RenamedVar';
60 my $renamed = RenamedVar(9..12);
61 is_deeply $renamed->args, [9..12], 'imported generator can be renamed';
62 }, undef, 'no errors for renamed usage';