#!perl -T
use strict;
use warnings;
use lib 't';
use Test::More;
eval " use YAML ";
plan skip_all => "YAML is not installed." if $@;
plan 'no_plan';
use MyClass;
for my $plugin (qw/ AliasMethod AliasMethod2 /) {
my $obj = MyClass->new({ load_plugins => [$plugin] });
is $obj->call('bar'), 'baz';
MyClass->load_components(qw/ Autocall::InjectMethod /);
my $obj2 = MyClass->new({ load_plugins => [$plugin] });
is $obj2->bar, 'baz';
clear_isa();
{ no strict 'refs'; delete ${'MyClass::'}{bar}; }
MyClass->load_components(qw/ Autocall::SingletonMethod /);
my $obj3 = MyClass->new({ load_plugins => [$plugin] });
is $obj3->bar, 'baz';
clear_isa();
{ no strict 'refs'; delete ${'MyClass::_Singletons::0::'}{bar}; }
MyClass->load_components(qw/ Autocall::Autoload /);
my $obj4 = MyClass->new({ load_plugins => [$plugin] });
is $obj4->bar, 'baz';
clear_isa();
}
sub clear_isa {
@MyClass::ISA = ('Class::Component');
for my $key (keys %{ Class::Component::Implement->default_components } ) {
delete Class::Component::Implement->default_components->{$key};
}
}