#!perl
use strict;
use warnings;
use lib 't';
use FindBin;
use Test::More;
use MyClass;
MyClass->class_component_reinitialize( reload_plugin => 1 );
eval " use YAML ";
plan skip_all => "YAML is not installed." if $@;
plan 'no_plan';
my $dump_file = "$FindBin::Bin/04_myclass_autoload_dump.dump";
if (1) {
my $obj = YAML::LoadFile($dump_file);
my @obj = @{ $obj };
isa_ok $obj[0], 'MyClass';
isa_ok $obj[0], 'Class::Component';
is $obj[0]->call('default'), 'default';
is $obj[0]->default, 'default';
is $obj[1]->call('default'), 'default';
is $obj[1]->default, 'default';
is $obj[1]->call('hello'), 'hello';
is $obj[1]->hello, 'hello';
is $obj[1]->run_hook('hello')->[0], 'hook hello';
is $obj[1]->call('hello2', 'data'), 'data';
is $obj[1]->hello2('data'), 'data';
is $obj[1]->run_hook('hello2', { value => 'data' })->[0], 'data';
} else {
MyClass->load_components(qw/ Autocall /);
my @obj = ();
$obj[0] = MyClass->new;
$obj[1] = MyClass->new({ load_plugins => [qw/ Hello /] });
YAML::DumpFile($dump_file, \@obj);
}