Class::MOP - all the method methods and tests
[gitmo/Class-MOP.git] / t / 010_self_introspection.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More no_plan => 1;
7 use Test::Exception;
8
9 BEGIN {
10     use_ok('Class::MOP::Class');        
11 }
12
13
14 my $meta = Class::MOP::Class->initialize('Class::MOP::Class');
15 isa_ok($meta, 'Class::MOP::Class');
16
17 foreach my $method_name (qw(
18     initialize create
19     name version
20     superclasses class_precedence_list
21     has_method get_method add_method remove_method 
22     get_method_list compute_all_applicable_methods find_all_methods_by_name
23     )) {
24     ok($meta->has_method($method_name), '... Class::MOP::Class->has_method(' . $method_name . ')');
25     {
26         no strict 'refs';
27         is($meta->get_method($method_name), 
28            \&{'Class::MOP::Class::' . $method_name},
29            '... Class::MOP::Class->get_method(' . $method_name . ') == &Class::MOP::Class::' . $method_name);        
30     }
31 }
32
33 is($meta->name, 'Class::MOP::Class', '... Class::MOP::Class->name');
34 is($meta->version, $Class::MOP::Class::VERSION, '... Class::MOP::Class->version');
35
36 is_deeply(
37     [ $meta->superclasses ], 
38     [], 
39     '... Class::MOP::Class->superclasses == []');
40     
41 is_deeply(
42     [ $meta->class_precedence_list ], 
43     [ 'Class::MOP::Class' ], 
44     '... Class::MOP::Class->class_precedence_list == []');
45