Commit | Line | Data |
8b978dd5 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More no_plan => 1; |
7 | |
8 | BEGIN { |
9 | use_ok('Class::MOP'); |
10 | use_ok('Class::MOP::Class'); |
11 | } |
12 | |
13 | { |
14 | package Foo; |
15 | our $VERSION = '0.01'; |
16 | |
17 | package Bar; |
18 | our @ISA = ('Foo'); |
19 | } |
20 | |
21 | my $Foo = Foo->meta(); |
22 | isa_ok($Foo, 'Class::MOP::Class'); |
23 | |
24 | my $Bar = Bar->meta(); |
25 | isa_ok($Bar, 'Class::MOP::Class'); |
26 | |
27 | is($Foo->name, 'Foo', '... Foo->name == Foo'); |
28 | is($Bar->name, 'Bar', '... Bar->name == Bar'); |
29 | |
30 | is($Foo->version, '0.01', '... Foo->version == 0.01'); |
31 | is($Bar->version, undef, '... Bar->version == undef'); |
32 | |
33 | is_deeply([$Foo->superclasses], [], '... Foo has no superclasses'); |
34 | is_deeply([$Bar->superclasses], ['Foo'], '... Bar->superclasses == (Foo)'); |
35 | |
36 | $Foo->superclasses('UNIVERSAL'); |
37 | |
38 | is_deeply([$Foo->superclasses], ['UNIVERSAL'], '... Foo->superclasses == (UNIVERSAL) now'); |
39 | |
40 | is_deeply( |
41 | [ $Foo->class_precedence_list ], |
42 | [ 'Foo', 'UNIVERSAL' ], |
43 | '... Foo->class_precedence_list == (Foo, UNIVERSAL)'); |
44 | |
45 | is_deeply( |
46 | [ $Bar->class_precedence_list ], |
47 | [ 'Bar', 'Foo', 'UNIVERSAL' ], |
48 | '... Bar->class_precedence_list == (Bar, Foo, UNIVERSAL)'); |
49 | |
50 | # create a class using Class::MOP::Class ... |
51 | |
52 | my $Baz = Class::MOP::Class->create( |
53 | 'Baz' => '0.10' => ( |
54 | superclasses => [ 'Bar' ] |
55 | )); |
56 | isa_ok($Baz, 'Class::MOP::Class'); |
57 | is(Baz->meta, $Baz, '... our metaclasses are singletons'); |
58 | |
59 | is($Baz->name, 'Baz', '... Baz->name == Baz'); |
60 | is($Baz->version, '0.10', '... Baz->version == 0.10'); |
61 | |
62 | is_deeply([$Baz->superclasses], ['Bar'], '... Baz->superclasses == (Bar)'); |
63 | |
64 | is_deeply( |
65 | [ $Baz->class_precedence_list ], |
66 | [ 'Baz', 'Bar', 'Foo', 'UNIVERSAL' ], |
67 | '... Baz->class_precedence_list == (Baz, Bar, Foo, UNIVERSAL)'); |
68 | |
69 | |