add make_variant_package_name optional method
[p5sagit/Package-Variant.git] / t / 01simple.t
index 2d51873..6e8348c 100644 (file)
@@ -72,8 +72,8 @@ BEGIN {
   package TestArrayImports;
   use Package::Variant
     importing => [
-      TestImportableA => undef,
-      TestImportableB => undef,
+      'TestImportableA',
+      'TestImportableB',
     ];
   sub make_variant { }
   $INC{'TestArrayImports.pm'} = __FILE__;
@@ -85,4 +85,69 @@ TestArrayImports(23);
 is_deeply [@imported], [qw( TestImportableA TestImportableB )],
   'multiple imports in the right order';
 
+BEGIN {
+  package TestSingleImport;
+  use Package::Variant importing => 'TestImportableA';
+  sub make_variant { }
+  $INC{'TestSingleImport.pm'} = __FILE__;
+}
+
+@imported = ();
+
+use TestSingleImport;
+TestSingleImport(23);
+
+is_deeply [@imported], [qw( TestImportableA )],
+  'scalar import works';
+
+@imported = ();
+
+TestSingleImport::->build_variant;
+
+is_deeply [@imported], [qw( TestImportableA )],
+  'build_variant works';
+
+like exception {
+  Package::Variant->import(
+    importing => \'foo', subs => [qw( foo )],
+  );
+}, qr/importing.+option.+hash.+array/i, 'invalid "importing" option';
+
+like exception {
+  Package::Variant->import(
+    importing => { foo => \'bar' }, subs => [qw( bar )],
+  );
+}, qr/import.+argument.+foo.+not.+array/i, 'invalid import argument list';
+
+like exception {
+  Package::Variant->import(
+    importing => [ foo => ['bar'], ['bam'], subs => [qw( bar )] ],
+  );
+}, qr/value.+3.+importing.+not.+string/i, 'importing array invalid key';
+
+like exception {
+  Package::Variant->import(
+    importing => [ foo => \'bam', subs => [qw( bar )] ],
+  );
+}, qr/value.+2.+foo.+importing.+array/i, 'importing array invalid list';
+
+BEGIN {
+  package TestOverrideName;
+
+  use Package::Variant;
+
+  sub make_variant_package_name {
+    my (undef, @args) = @_;
+    return $args[0];
+  }
+
+  sub make_variant {
+    install hey => sub { 'hey' };
+  }
+}
+
+is(TestOverrideName::->build_variant('hey'), 'hey');
+
+is(hey->hey, 'hey', 'hey');
+
 done_testing;