Commit | Line | Data |
5659d76e |
1 | use strict; |
2 | use warnings; |
3 | |
45a183fb |
4 | use Test::More tests => 65; |
5659d76e |
5 | use Test::Exception; |
6 | |
efd3d14c |
7 | use Class::MOP; |
5659d76e |
8 | |
9 | { |
013b1897 |
10 | my $attr = Class::MOP::Attribute->new('$test'); |
11 | is($attr->meta, Class::MOP::Attribute->meta, '... instance and class both lead to the same meta'); |
12 | } |
13 | |
14 | { |
5659d76e |
15 | my $meta = Class::MOP::Attribute->meta(); |
16 | isa_ok($meta, 'Class::MOP::Class'); |
1d68af04 |
17 | |
5659d76e |
18 | my @methods = qw( |
89871ad6 |
19 | new |
20 | clone |
1d68af04 |
21 | |
bd4e03f9 |
22 | initialize_instance_slot |
8ee74136 |
23 | _set_initial_slot_value |
1d68af04 |
24 | |
5659d76e |
25 | name |
89871ad6 |
26 | has_accessor accessor |
27 | has_writer writer |
28 | has_write_method get_write_method get_write_method_ref |
29 | has_reader reader |
30 | has_read_method get_read_method get_read_method_ref |
31 | has_predicate predicate |
32 | has_clearer clearer |
33 | has_builder builder |
34 | has_init_arg init_arg |
35 | has_default default is_default_a_coderef |
36 | has_initializer initializer |
1d68af04 |
37 | |
d9d99689 |
38 | definition_context |
39 | |
c57c8b10 |
40 | slots |
16e960bd |
41 | get_value |
42 | set_value |
ef91a0e2 |
43 | set_initial_value |
3545c727 |
44 | has_value |
45 | clear_value |
1d68af04 |
46 | |
5659d76e |
47 | associated_class |
89871ad6 |
48 | attach_to_class |
49 | detach_from_class |
1d68af04 |
50 | |
ba38bf08 |
51 | accessor_metaclass |
1d68af04 |
52 | |
3545c727 |
53 | associated_methods |
54 | associate_method |
1d68af04 |
55 | |
5659d76e |
56 | process_accessors |
45a183fb |
57 | _process_accessors |
5659d76e |
58 | install_accessors |
59 | remove_accessors |
4b698b1a |
60 | |
61 | _new |
5659d76e |
62 | ); |
1d68af04 |
63 | |
5659d76e |
64 | is_deeply( |
5659d76e |
65 | [ sort $meta->get_method_list ], |
7d28758b |
66 | [ sort @methods ], |
1d68af04 |
67 | '... our method list matches'); |
68 | |
5659d76e |
69 | foreach my $method_name (@methods) { |
70 | ok($meta->has_method($method_name), '... Class::MOP::Attribute->has_method(' . $method_name . ')'); |
71 | } |
1d68af04 |
72 | |
c23184fc |
73 | my @attributes = ( |
8683db0e |
74 | 'name', |
75 | 'accessor', |
76 | 'reader', |
77 | 'writer', |
78 | 'predicate', |
79 | 'clearer', |
80 | 'builder', |
81 | 'init_arg', |
82 | 'initializer', |
d9d99689 |
83 | 'definition_context', |
8683db0e |
84 | 'default', |
85 | 'associated_class', |
86 | 'associated_methods', |
1bd2739a |
87 | ); |
5659d76e |
88 | |
89 | is_deeply( |
5659d76e |
90 | [ sort $meta->get_attribute_list ], |
7d28758b |
91 | [ sort @attributes ], |
5659d76e |
92 | '... our attribute list matches'); |
1d68af04 |
93 | |
5659d76e |
94 | foreach my $attribute_name (@attributes) { |
1d68af04 |
95 | ok($meta->has_attribute($attribute_name), '... Class::MOP::Attribute->has_attribute(' . $attribute_name . ')'); |
5659d76e |
96 | } |
1d68af04 |
97 | |
98 | # We could add some tests here to make sure that |
99 | # the attribute have the appropriate |
100 | # accessor/reader/writer/predicate combinations, |
101 | # but that is getting a little excessive so I |
102 | # wont worry about it for now. Maybe if I get |
5659d76e |
103 | # bored I will do it. |
2d711cc8 |
104 | } |