use strict; use warnings; use Test::More tests => 4; use File::Basename; use lib File::Basename::dirname(__FILE__)."/../../../lib"; use lib File::Basename::dirname(__FILE__)."/../.."; use UR; UR::Object::Type->define( class_name => 'Acme::Composited::Polygon', id_by => [ qw/size color shape/ ] ); UR::Object::Type->define( class_name => 'Acme::Box', has_abstract_constant => [ 'subject_class_name' ], has => [ subject => { is => 'UR::Object', id_class_by => 'subject_class_name', id_by => 'subject_id', doc => 'the object being boxed' } ] ); my ($obj,$box); $obj = Acme::Composited::Polygon->create( size => 'big', color => 'blue', shape => 'square' ); ok($obj,'make the composited id object'); $box = Acme::Box->create( subject_class_name => 'Acme::Composited::Polygon' ); ok($box,'make the container'); ok($box->subject($obj),'set subject on container'); ok($box->subject,'container still has subject');