X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F003_methods.t;h=d807876d026b1332764482e38aad6569ee544bf9;hb=16e960bd460d404b809a1e5c24ba77405643342b;hp=994347606d480f24148483ad3311bce36d950b45;hpb=b1d5534136ff0d784759bdef7e9bff56accb6466;p=gitmo%2FClass-MOP.git diff --git a/t/003_methods.t b/t/003_methods.t index 9943476..d807876 100644 --- a/t/003_methods.t +++ b/t/003_methods.t @@ -3,9 +3,11 @@ use strict; use warnings; -use Test::More tests => 52; +use Test::More tests => 56; use Test::Exception; +use Scalar::Util qw/reftype/; + BEGIN { use_ok('Class::MOP'); use_ok('Class::MOP::Class'); @@ -32,6 +34,11 @@ BEGIN { # We hateses the "used only once" warnings { my $temp = \&Foo::baz } + + package OinkyBoinky; + our @ISA = "Foo"; + + sub elk { 'OinkyBoinky::elk' } package main; @@ -78,6 +85,17 @@ ok($Foo->has_method('bling'), '... Foo->has_method(bling) (defined in main:: usi ok($Foo->has_method('bang'), '... Foo->has_method(bang) (defined in main:: using symbol tables and Sub::Name)'); ok($Foo->has_method('evaled_foo'), '... Foo->has_method(evaled_foo) (evaled in main::)'); +my $OinkyBoinky = Class::MOP::Class->initialize('OinkyBoinky'); + +ok($OinkyBoinky->has_method('elk'), "the method 'elk' is defined in OinkyBoinky"); + +ok(!$OinkyBoinky->has_method('bar'), "the method 'bar' is not defined in OinkyBoinky"); + +ok(my $bar = $OinkyBoinky->find_method_by_name('bar'), "but if you look in the inheritence chain then 'bar' does exist"); + +is( reftype($bar), "CODE", "the returned value is a code ref" ); + + # calling get_method blessed them all isa_ok($_, 'Class::MOP::Method') for ( \&Foo::FOO_CONSTANT,