Commit | Line | Data |
c3398f5b |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
4 | use Test::More tests => 12; |
5 | |
6 | do { |
7 | package Class; |
8 | use Mouse; |
9 | |
10 | has pawn => ( |
11 | is => 'rw', |
12 | predicate => 'has_pawn', |
13 | ); |
14 | |
15 | no Mouse; |
16 | }; |
17 | |
18 | my $meta = Class->meta; |
19 | isa_ok($meta, 'Mouse::Class'); |
20 | |
21 | is_deeply([$meta->superclasses], ['Mouse::Object'], "correctly inherting from Mouse::Object"); |
22 | |
23 | my $meta2 = Class->meta; |
24 | is($meta, $meta2, "same metaclass instance"); |
25 | |
26 | can_ok($meta, 'name', 'attributes', 'get_attribute_map'); |
27 | |
28 | my $attr = $meta->get_attribute('pawn'); |
29 | isa_ok($attr, 'Mouse::Attribute'); |
30 | is($attr->name, 'pawn', 'got the correct attribute'); |
31 | |
32 | my $map = $meta->get_attribute_map; |
33 | is_deeply($map, { pawn => $attr }, "attribute map"); |
34 | |
35 | eval " |
36 | package Class; |
37 | use Mouse; |
38 | no Mouse; |
39 | "; |
40 | |
41 | my $meta3 = Class->meta; |
42 | is($meta, $meta3, "same metaclass instance, even if use Mouse is performed again"); |
43 | |
44 | is($meta->name, 'Class', "name for the metaclass"); |
45 | |
46 | do { |
47 | package Child; |
48 | use Mouse; |
49 | extends 'Class'; |
50 | }; |
51 | |
52 | my $child_meta = Child->meta; |
53 | isa_ok($child_meta, 'Mouse::Class'); |
54 | |
55 | isnt($meta, $child_meta, "different metaclass instances for the two classes"); |
56 | |
57 | is_deeply([$child_meta->superclasses], ['Class'], "correct superclasses"); |