#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use Test::Moose;
use Bread::Board;
{
package My::Foo;
use Moose;
has 'bar' => (
is => 'ro',
isa => 'My::Bar',
required => 1
);
package My::Bar;
use Moose;
has 'foo' => (
is => 'ro',
isa => 'My::Foo',
required => 1
);
}
{
my $c = container 'MyTestContainer' => as {
typemap 'My::Foo' => infer;
};
ok($c->has_type_mapping_for('My::Foo'), '... have a type mapping for My::Foo');
{
my $foo = $c->resolve( type => 'My::Foo' );
isa_ok($foo, 'My::Foo');
isa_ok($foo->bar, 'My::Bar');
}
{
my $bar = $c->resolve( service => 'type:My::Bar' );
isa_ok($bar, 'My::Bar');
isa_ok($bar->foo, 'My::Foo');
}
}
done_testing;