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