1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More;
7
8use Bread::Board;
9
10{
11    package Stapler;
12    use Moose;
13    package Desk;
14    use Moose;
15    has 'stapler' => ( is => 'ro', isa => 'Stapler', required => 1 );
16
17    package Employee;
18    use Moose;
19    has 'desk' => ( is => 'ro', isa => 'Desk' );
20}
21
22
23my $c = container 'TypeDependencyTest' => as {
24    typemap 'Desk' => infer;
25
26    service 'Employee' => (
27        class => 'Employee',
28        dependencies => {
29            desk => 'type:Desk'
30        }
31    );
32};
33
34my $desk = $c->resolve( type => 'Desk' );
35isa_ok($desk, 'Desk');
36isa_ok($desk->stapler, 'Stapler');
37
38my $employee = $c->resolve( service => 'Employee' );
39isa_ok($employee, 'Employee');
40isa_ok($employee->desk, 'Desk');
41isa_ok($employee->desk->stapler, 'Stapler');
42
43done_testing;
44