use Test::More qw/no_plan/;
use lib qw(./lib t/lib);
require UtilPluggable;
package BBB;
UtilPluggable->import(-pluggable2);
use Test::More;
ok( defined &UtilPluggable::Plugin::Pluggable2::utils);
ok(!defined &UtilPluggable::Plugin::Pluggable::utils);
ok(!defined &test);
ok(!defined &test2);
ok(!defined &camelize);
ok(!defined &xxx);
ok(defined &test3);
main::unload();
package AAA;
UtilPluggable->import(-pluggable_all);
use Test::More;
ok(defined &UtilPluggable::Plugin::Pluggable::utils);
ok(!defined &UtilPluggable::Plugin::Pluggable2::utils);
ok(defined &test);
ok(!defined &test2);
ok(defined &camelize);
ok(!defined &test3);
ok(defined &xxx);
main::unload();
package CCC;
use Test::More;
UtilPluggable->import(-pluggable, -pluggable2);
ok(defined &test);
ok(defined &test2);
ok(defined &camelize);
ok(defined &test3);
ok(!defined &xxx);
main::unload();
package DDD;
use Test::More;
UtilPluggable->import(-all);
ok(defined &test);
ok(defined &test2);
ok(defined &camelize);
ok(defined &test3);
ok(defined &xxx);
main::unload();
package EEE;
use Test::More;
UtilPluggable->import(-pluggable_xxx);
ok(!defined &test);
ok(!defined &test2);
ok(!defined &camelize);
ok(!defined &test3);
ok(defined &xxx);
main::unload();
package main;
sub unload {
delete @INC{qw{UtilPluggable/Plugin/Pluggable.pm UtilPluggable/Plugin/Pluggable2.pm}};
undef &UtilPluggable::Plugin::Pluggable::utils;
undef &UtilPluggable::Plugin::Pluggable2::utils;
undef &Util::Pluggable::plugins;
}