class-module-package
[gitmo/Class-MOP.git] / t / 000_load.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 8;
7
8 BEGIN {
9     use_ok('Class::MOP');
10     use_ok('Class::MOP::Class');
11     use_ok('Class::MOP::Attribute');
12     use_ok('Class::MOP::Method');            
13     use_ok('Class::MOP::Instance');            
14 }
15
16 # make sure we are tracking metaclasses correctly
17
18 my %METAS = (
19     'Class::MOP::Attribute' => Class::MOP::Attribute->meta, 
20     'Class::MOP::Package'   => Class::MOP::Package->meta, 
21     'Class::MOP::Module'    => Class::MOP::Module->meta,     
22     'Class::MOP::Class'     => Class::MOP::Class->meta, 
23     'Class::MOP::Method'    => Class::MOP::Method->meta,  
24     'Class::MOP::Instance'  => Class::MOP::Instance->meta,      
25 );
26
27 is_deeply(
28     { Class::MOP::Class->get_all_metaclasses },
29     \%METAS,
30     '... got all the metaclasses');
31
32 is_deeply(
33     [ sort { $a->name cmp $b->name } Class::MOP::Class->get_all_metaclass_instances ],
34     [ 
35         Class::MOP::Attribute->meta, 
36         Class::MOP::Class->meta, 
37         Class::MOP::Instance->meta,         
38         Class::MOP::Method->meta,
39         Class::MOP::Module->meta,   
40         Class::MOP::Package->meta,              
41     ],
42     '... got all the metaclass instances');
43
44 is_deeply(
45     [ sort Class::MOP::Class->get_all_metaclass_names ],
46     [ qw/
47         Class::MOP::Attribute       
48         Class::MOP::Class
49         Class::MOP::Instance
50         Class::MOP::Method
51         Class::MOP::Module  
52         Class::MOP::Package                      
53     / ],
54     '... got all the metaclass names');