summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorChad Granum <exodist7@gmail.com>2016-08-20 14:12:12 -0700
committerChad Granum <exodist7@gmail.com>2016-08-20 15:20:45 -0700
commit2646e3aa94d44a364821ca039cfca6acf45f2e12 (patch)
tree2ad52c4794a576f86eb3e76faa757e8ebb3b1524 /t
parent7aff74b4ae78cf1b83c93eb84f56dbc4803d1539 (diff)
Fully support versions
Fixes #4
Diffstat (limited to 't')
-rw-r--r--t/units.t3
-rw-r--r--t/versions.t76
2 files changed, 79 insertions, 0 deletions
diff --git a/t/units.t b/t/units.t
index 850da4e..099ac81 100644
--- a/t/units.t
+++ b/t/units.t
@@ -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;