1#!/usr/bin/env perl 2use strict; 3use warnings; 4use Test::More; 5 6use Bread::Board; 7 8{ 9 package NonMoose; 10 sub new { bless { data => $_[0] }, shift } 11} 12 13{ 14 package Foo; 15 use Moose; 16 17 has non_moose => ( 18 is => 'ro', 19 isa => 'NonMoose', 20 required => 1, 21 ); 22} 23 24{ 25 package Bar; 26 use Moose; 27 28 has foo => ( 29 is => 'ro', 30 isa => 'Foo', 31 required => 1, 32 ); 33} 34 35{ 36 my $c = container Stuff => as { 37 service non_moose => NonMoose->new("foo"); 38 service foo => ( 39 class => 'Foo', 40 dependencies => ['non_moose'], 41 ); 42 typemap 'Foo' => 'foo'; 43 typemap 'Bar' => infer; 44 }; 45 46 my $bar = $c->resolve(type => 'Bar'); 47 isa_ok($bar->foo->non_moose, 'NonMoose'); 48} 49 50{ 51 package Foo::Sub; 52 use Moose; 53 54 extends 'Foo'; 55} 56 57{ 58 my $c = container Stuff => as { 59 service non_moose => NonMoose->new("foo"); 60 service foo => ( 61 class => 'Foo::Sub', 62 dependencies => ['non_moose'], 63 ); 64 typemap 'Foo::Sub' => 'foo'; 65 typemap 'Bar' => infer; 66 }; 67 68 my $bar = $c->resolve(type => 'Bar'); 69 isa_ok($bar->foo->non_moose, 'NonMoose'); 70} 71 72done_testing; 73