1b8851fccSafresh1use strict;
2b8851fccSafresh1use warnings;
3b8851fccSafresh1
4b8851fccSafresh1package Test::Tester::Delegate;
5b8851fccSafresh1
6*3d61058aSafresh1our $VERSION = '1.302199';
75759b3d2Safresh1
85759b3d2Safresh1use Scalar::Util();
95759b3d2Safresh1
10b8851fccSafresh1use vars '$AUTOLOAD';
11b8851fccSafresh1
12b8851fccSafresh1sub new
13b8851fccSafresh1{
14b8851fccSafresh1	my $pkg = shift;
15b8851fccSafresh1
16b8851fccSafresh1	my $obj = shift;
17b8851fccSafresh1	my $self = bless {}, $pkg;
18b8851fccSafresh1
19b8851fccSafresh1	return $self;
20b8851fccSafresh1}
21b8851fccSafresh1
22b8851fccSafresh1sub AUTOLOAD
23b8851fccSafresh1{
24b8851fccSafresh1	my ($sub) = $AUTOLOAD =~ /.*::(.*?)$/;
25b8851fccSafresh1
26b8851fccSafresh1	return if $sub eq "DESTROY";
27b8851fccSafresh1
28b8851fccSafresh1	my $obj = $_[0]->{Object};
29b8851fccSafresh1
30b8851fccSafresh1	my $ref = $obj->can($sub);
31b8851fccSafresh1	shift(@_);
32b8851fccSafresh1	unshift(@_, $obj);
33b8851fccSafresh1	goto &$ref;
34b8851fccSafresh1}
35b8851fccSafresh1
365759b3d2Safresh1sub can {
375759b3d2Safresh1	my $this = shift;
385759b3d2Safresh1	my ($sub) = @_;
395759b3d2Safresh1
405759b3d2Safresh1	return $this->{Object}->can($sub) if Scalar::Util::blessed($this);
415759b3d2Safresh1
425759b3d2Safresh1	return $this->SUPER::can(@_);
435759b3d2Safresh1}
445759b3d2Safresh1
45b8851fccSafresh11;
46