diff options
author | Chad Granum <exodist7@gmail.com> | 2016-08-20 14:12:12 -0700 |
---|---|---|
committer | Chad Granum <exodist7@gmail.com> | 2016-08-20 15:20:45 -0700 |
commit | 2646e3aa94d44a364821ca039cfca6acf45f2e12 (patch) | |
tree | 2ad52c4794a576f86eb3e76faa757e8ebb3b1524 /t | |
parent | 7aff74b4ae78cf1b83c93eb84f56dbc4803d1539 (diff) |
Fully support versions
Fixes #4
Diffstat (limited to 't')
-rw-r--r-- | t/units.t | 3 | ||||
-rw-r--r-- | t/versions.t | 76 |
2 files changed, 79 insertions, 0 deletions
@@ -282,6 +282,7 @@ subtest reload_menu => sub { "All empty menus are the same" ); + delete $menu1->{versions}; # too deep to check is_deeply( $menu1, { @@ -353,6 +354,7 @@ subtest reload_menu => sub { is($one->{menu_for}, 'fake', "remember who it was generated for"); ok(my $gen = delete $menu->{generate}, "got a generate function"); + delete $menu->{versions}; # Complicated is_deeply( $menu, { @@ -440,6 +442,7 @@ subtest reload_menu => sub { is($one->{menu_for}, 'fake', "remember who it was generated for"); ok(my $gen = delete $menu->{generate}, "got a generate function"); + delete $menu->{versions}; is_deeply( $menu, { diff --git a/t/versions.t b/t/versions.t new file mode 100644 index 0000000..f988370 --- /dev/null +++ b/t/versions.t @@ -0,0 +1,76 @@ +use strict; +use warnings; + +use Importer 'Test::More'; + +BEGIN { + $INC{'My/Exporter.pm'} = 1; + package My::Exporter; + + sub IMPORTER_MENU { + return ( + export_anon => { + a => sub { 'a0' }, + b => sub { 'b0' }, + c => sub { 'c0' }, + d => sub { 'd0' }, + e => sub { 'e0' }, + }, + export_versions => { + v1 => { + export => [qw/a b c/], + export_anon => { + a => sub { 'a1' }, + b => sub { 'b1' }, + c => sub { 'c1' }, + }, + }, + v2 => { + export => [qw/a b c/], + export_anon => { + a => sub { 'a2' }, + b => sub { 'b2' }, + c => sub { 'c2' }, + }, + }, + }, + ); + } +} + +{ + package My::Importer::A; + use Importer 'My::Exporter' => qw/a b c d e/; + ::is(a(), 'a0', "got versionless a()"); + ::is(b(), 'b0', "got versionless b()"); + ::is(c(), 'c0', "got versionless c()"); + ::is(d(), 'd0', "got versionless d()"); + ::is(e(), 'e0', "got versionless d()"); +} + +{ + package My::Importer::B; + use Importer 'My::Exporter' => qw/d +v1 a b +v2 c +v0 e/; + + ::is(a(), 'a1', "got v1 a()"); + ::is(b(), 'b1', "got v1 b()"); + + ::is(c(), 'c2', "got v2 c()"); + + ::is(d(), 'd0', "got versionless d()"); + + ::is(e(), 'e0', "got versionless e()"); +} + +{ + package My::Importer::C; + use Importer 'My::Exporter' => ':v1'; + + ::is(a(), 'a1', "got v1 a()"); + ::is(b(), 'b1', "got v1 b()"); + ::is(c(), 'c1', "got v1 c()"); + + ::ok(!__PACKAGE__->can('d'), "Did not import d()"); +} + +done_testing; |