use strict;
use warnings;
use Test::More 'tests' => 8;
package Foo; {
use Object::InsideOut;
my @data :Field('Acc'=>'data');
my %init_args :InitArgs = (
'DATA' => {
'Field' => \@data,
},
);
}
package Bar; {
use Object::InsideOut qw(Foo);
sub _preinit :PreInit
{
my ($self, $args) = @_;
if (! exists($args->{'DATA'})) {
$args->{'DATA'} = 'bar';
}
}
}
package Baz; {
use Object::InsideOut qw(Bar);
}
package main;
MAIN:
{
my $obj = Bar->new('DATA' => 'main');
ok($obj => 'Object okay');
is($obj->data(), 'main' => 'Object data from main');
$obj = Bar->new();
ok($obj => 'Object okay');
is($obj->data(), 'bar' => 'Object data from bar');
$obj = Baz->new('DATA' => 'main');
ok($obj => 'Object okay');
is($obj->data(), 'main' => 'Object data from main');
$obj = Baz->new();
ok($obj => 'Object okay');
is($obj->data(), 'bar' => 'Object data from bar');
}
exit(0);
# EOF