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