Commit | Line | Data |
38bf2a25 |
1 | use strict; |
2 | use Test::More; |
3 | use Test::Fatal; |
4 | |
5 | use Class::MOP; |
6 | |
7 | { |
8 | package BaseClass; |
9 | sub m1 { 1 } |
10 | sub m2 { 2 } |
11 | sub m3 { 3 } |
12 | sub m4 { 4 } |
13 | sub m5 { 5 } |
14 | |
15 | package Derived; |
16 | use base qw(BaseClass); |
17 | |
18 | sub m1; |
19 | sub m2 (); |
20 | sub m3 :method; |
21 | sub m4; m4() if 0; |
22 | sub m5; our $m5;; |
23 | } |
24 | |
25 | my $meta = Class::MOP::Class->initialize('Derived'); |
26 | my %methods = map { $_ => $meta->find_method_by_name($_) } 'm1' .. 'm5'; |
27 | |
28 | while (my ($name, $meta_method) = each %methods) { |
29 | is $meta_method->fully_qualified_name, "Derived::${name}"; |
30 | like( exception { $meta_method->execute }, qr/Undefined subroutine .* called at/ ); |
31 | } |
32 | |
33 | { |
34 | package Derived; |
35 | eval <<'EOC'; |
36 | |
37 | sub m1 { 'affe' } |
38 | sub m2 () { 'apan' } |
39 | sub m3 :method { 'tiger' } |
40 | sub m4 { 'birne' } |
41 | sub m5 { 'apfel' } |
42 | |
43 | EOC |
44 | } |
45 | |
46 | while (my ($name, $meta_method) = each %methods) { |
47 | is $meta_method->fully_qualified_name, "Derived::${name}"; |
48 | is( exception { $meta_method->execute }, undef ); |
49 | } |
50 | |
51 | done_testing; |