use strict; use warnings; use Test::More tests => 9; BEGIN { use_ok 'director_detect' } require_ok 'director_detect'; { package MyBar; use base 'director_detect::Bar'; sub new { my $class = shift; my $val = @_ ? shift : 2; my $self = $class->SUPER::new(); $self->{val} = $val; return $self; } sub get_value { my($self) = @_; $self->{val}++; return $self->{val}; } sub get_class { my($self) = @_; $self->{val}++; return director_detect::A->new(); } sub just_do_it { my($self) = @_; $self->{val}++; } sub clone { my($self) = @_; MyBar->new($self->{val}); } } my $b = MyBar->new(); isa_ok $b, 'MyBar'; my $f = $b->baseclass(); isa_ok $f, 'director_detect::Foo'; is $f->get_value(), 3; isa_ok $f->get_class(), 'director_detect::A'; $f->just_do_it(); my $c = $b->clone(); isa_ok $c, 'MyBar'; is $b->{val}, 5; is $c->get_value(), 6;