use Test::More qw/no_plan/; use Util::Any (); use strict; use Data::Dumper; require Cwd; my @cwd_funcs = qw/cwd getcwd fastcwd fastgetcwd chdir abs_path fast_abs_path realpath fast_realpath/; push @cwd_funcs, qw(getdcwd) if $^O eq 'MSWin32'; @cwd_funcs = sort @cwd_funcs; my @funcs = sort @{Util::Any::_all_funcs_in_class('Cwd')}; is_deeply(\@funcs, \@cwd_funcs); my @tests = ( [ [ [list => ['any', 'uniq']], {} ], [ [], {list => ['any', 'uniq']} ], ], [ [ [ scalar => [camelcase => { -as => 'cl' } ], qw/hoge fuga/], {} ], [ [qw/hoge fuga/], {scalar => [camelcase => {-as => 'cl'}]} ], ], [ [ [ scalar => [camelcase => { -as => 'cl' }], list => [uniq => {-as => 'unique'}, 'any', 'max', shuffle => {-as => 'mix'}, 'min' ], qw/aaa bbb dcc/, ], {} ], [ [qw/aaa bbb dcc/], {scalar => [camelcase => {-as => 'cl'}], list => [uniq => {-as => 'unique'}, 'any', 'max', shuffle => {-as => 'mix'}, 'min' ], } ], ], [ [ [ scalar => {-prefix => 'sc_'}], {} ], [ [], {scalar => {-prefix => 'sc_'}} ], ], [ [ ['string', list => ['any', 'uniq']], {} ], [ [], {string => undef, list => ['any', 'uniq']} ], ], ); for my $test (@tests) { my ($args, $config) = (@{$test->[0]}); my $ret = $test->[1]; my ($arg, $want) = Util::Any->_arrange_args($args, $Util::Any::Utils, 'main'); is_deeply($arg, $ret->[0]); is_deeply($want, $ret->[1]); } my @isa = @main::ISA; Util::Any::_base_import('Util::Any', 'main', '-base'); is($main::ISA[-1], 'Util::Any', 'isa'); ok(!defined &main::_use_import_module, 'not defined'); @main::ISA = @isa; MODULE: foreach my $m (['-Exporter' , 'Exporter' ], ['-ExporterSimple' , 'Exporter::Simple' ], ['-SubExporter' , 'Sub::Exporter' ], ['-Perl6ExportAttrs', 'Perl6::Export::Attrs'], ) { { package tmp_package; eval "require $m->[1]"; if($@ =~m{can't locate}i) { warn("$m->[1] is not installed\n"); next MODULE; } } Util::Any::_base_import('Util::Any', 'main', $m->[0]); my $file = $m->[1] . '.pm'; $file =~s{::}{/}g; ok(exists $main::INC{$file}, $file); is(&main::_use_import_module(), $m->[1], $m->[1]); undef &main::_use_import_module; @main::ISA = @isa; } eval { Util::Any::_base_import('Util::Any', 'main', "Hoge"); }; ok($@ =~ /cannot understand/, 'unknown option');