diff options
Diffstat (limited to 't/lib/Test/SubExporter/Faux.pm')
-rw-r--r-- | t/lib/Test/SubExporter/Faux.pm | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/t/lib/Test/SubExporter/Faux.pm b/t/lib/Test/SubExporter/Faux.pm new file mode 100644 index 0000000..a4332e8 --- /dev/null +++ b/t/lib/Test/SubExporter/Faux.pm @@ -0,0 +1,67 @@ + +use strict; +use warnings; +package Test::SubExporter::Faux; + +use base qw(Exporter); + +our @EXPORT = qw(faux_installer exports_ok everything_ok); + +sub faux_installer { + my ($verbose) = @_; + $verbose = 1; + + my @exported; + + my $reset = sub { @exported = () }; + + my $generator = sub { + my ($arg) = @_; + # my ($class, $name, $generator) = @$arg{qw(class name generator)}; + + return $arg; + }; + + my $installer = sub { + my ($arg, $to_export) = @_; + + for (my $i = 0; $i < @$to_export; $i += 2) { + my ($as, $gen_arg) = @$to_export[ $i, $i+1 ]; + + # my ($class, $generator, $name, $arg, $collection, $as, $into) = @_; + my $everything = { + class => $gen_arg->{class}, + generator => $gen_arg->{generator}, + name => $gen_arg->{name}, + arg => $gen_arg->{arg}, + collection => $gen_arg->{col}, + as => $as, + into => $arg->{into}, + }; + + push @exported, [ + $gen_arg->{name}, + ($verbose ? $everything : $gen_arg->{arg}), + ]; + } + }; + + return ($generator, $installer, $reset, \@exported); +} + +sub exports_ok { + my ($got, $expected, $comment) = @_; + my $got_simple = [ map { [ $_->[0], $_->[1]{arg} ] } @$got ]; + my @g = sort { ($a->[0] cmp $b->[0]) || ($a->[1] <=> $b->[1]) } @$got_simple; + my @e = sort { ($a->[0] cmp $b->[0]) || ($a->[1] <=> $b->[1]) } @$expected; + main::is_deeply(\@e, \@g, $comment); +} + +sub everything_ok { + my ($got, $expected, $comment) = @_; + my @g = sort { ($a->[0] cmp $b->[0]) || ($a->[1] <=> $b->[1]) } @$got; + my @e = sort { ($a->[0] cmp $b->[0]) || ($a->[1] <=> $b->[1]) } @$expected; + main::is_deeply(\@e, \@g, $comment); +} + +1; |