lost of misc changes; fixed the &create method; test cleanup
[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 => 17;
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     use_ok('Class::MOP::Object');                
15 }
16
17 # make sure we are tracking metaclasses correctly
18
19 my %METAS = (
20     'Class::MOP::Attribute' => Class::MOP::Attribute->meta, 
21     'Class::MOP::Package'   => Class::MOP::Package->meta, 
22     'Class::MOP::Module'    => Class::MOP::Module->meta,     
23     'Class::MOP::Class'     => Class::MOP::Class->meta, 
24     'Class::MOP::Method'    => Class::MOP::Method->meta,  
25     'Class::MOP::Instance'  => Class::MOP::Instance->meta,   
26     'Class::MOP::Object'    => Class::MOP::Object->meta,          
27 );
28
29 ok($_->is_immutable(), '... ' . $_->name . ' is immutable') for values %METAS;
30
31 is_deeply(
32     { Class::MOP::get_all_metaclasses },
33     \%METAS,
34     '... got all the metaclasses');
35
36 is_deeply(
37     [ sort { $a->name cmp $b->name } Class::MOP::get_all_metaclass_instances ],
38     [ 
39         Class::MOP::Attribute->meta, 
40         Class::MOP::Class->meta, 
41         Class::MOP::Instance->meta,         
42         Class::MOP::Method->meta,
43         Class::MOP::Module->meta, 
44         Class::MOP::Object->meta,          
45         Class::MOP::Package->meta,              
46     ],
47     '... got all the metaclass instances');
48
49 is_deeply(
50     [ sort { $a cmp $b } Class::MOP::get_all_metaclass_names() ],
51     [ qw/
52         Class::MOP::Attribute       
53         Class::MOP::Class
54         Class::MOP::Instance
55         Class::MOP::Method
56         Class::MOP::Module  
57         Class::MOP::Object        
58         Class::MOP::Package                      
59     / ],
60     '... got all the metaclass names');
61     
62 is_deeply(
63     [ map { $_->meta->identifier } sort { $a cmp $b } Class::MOP::get_all_metaclass_names() ],
64     [ 
65        "Class::MOP::Attribute-" . $Class::MOP::Attribute::VERSION . "-cpan:STEVAN",   
66        "Class::MOP::Class-"     . $Class::MOP::Class::VERSION     . "-cpan:STEVAN",
67        "Class::MOP::Instance-"  . $Class::MOP::Instance::VERSION  . "-cpan:STEVAN",
68        "Class::MOP::Method-"    . $Class::MOP::Method::VERSION    . "-cpan:STEVAN",
69        "Class::MOP::Module-"    . $Class::MOP::Module::VERSION    . "-cpan:STEVAN",
70        "Class::MOP::Object-"    . $Class::MOP::Object::VERSION    . "-cpan:STEVAN",
71        "Class::MOP::Package-"   . $Class::MOP::Package::VERSION   . "-cpan:STEVAN",
72     ],
73     '... got all the metaclass identifiers');    
74     
75     
76