1use strict; 2use warnings; 3use Test::More tests => 9; 4BEGIN { use_ok 'director_detect' } 5require_ok 'director_detect'; 6 7{ 8 package MyBar; 9 use base 'director_detect::Bar'; 10 sub new { my $class = shift; 11 my $val = @_ ? shift : 2; 12 my $self = $class->SUPER::new(); 13 $self->{val} = $val; 14 return $self; 15 } 16 sub get_value { my($self) = @_; 17 $self->{val}++; 18 return $self->{val}; 19 } 20 sub get_class { my($self) = @_; 21 $self->{val}++; 22 return director_detect::A->new(); 23 } 24 sub just_do_it { my($self) = @_; 25 $self->{val}++; 26 } 27 sub clone { my($self) = @_; 28 MyBar->new($self->{val}); 29 } 30} 31 32my $b = MyBar->new(); 33isa_ok $b, 'MyBar'; 34 35my $f = $b->baseclass(); 36isa_ok $f, 'director_detect::Foo'; 37is $f->get_value(), 3; 38 39isa_ok $f->get_class(), 'director_detect::A'; 40$f->just_do_it(); 41 42my $c = $b->clone(); 43isa_ok $c, 'MyBar'; 44is $b->{val}, 5; 45is $c->get_value(), 6; 46