Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save walf443/347660 to your computer and use it in GitHub Desktop.
Save walf443/347660 to your computer and use it in GitHub Desktop.
package Foo;
sub new {
bless {}, shift;
}
sub call_foo {
my $self = shift;
return __PACKAGE__;
}
package Bar;
use base qw(Foo);
sub call_bar {
my $self = shift;
return ref $self;
}
package Hoge;
sub new {
bless {}, __PACKAGE__;
}
sub shared_method {
return "Hoge";
}
package Fuga;
use base qw(Hoge);
sub fuga_only_metohd {
return "called!!";
}
sub shared_method {
return "Fuga";
}
package main;
use strict;
use warnings;
use Test::More;
my $bar = Bar->new;
is($bar->call_foo, "Foo", "__PACKAGE__はひきづがれないこと");
is($bar->call_bar, "Bar", 'ref $selfは変わること');
my $fuga = Fuga->new;
is(ref $fuga, "Hoge", "__PACKAGE__のままになっちゃうこと");
is(ref $fuga, "Fuga", "ほんとはこうなってほしいけど、このテストは失敗する");
can_ok($fuga, "fuga_only_metohd", "fuga_only_metohdが呼べてほしいけど、このテストは失敗する");
is($fuga->shared_method, "Fuga", "Fugaになってほしいけど、このテストは失敗する");
done_testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment