Fixed the scrwed up the list of methods which are not document for
[gitmo/Class-MOP.git] / t / 016_class_errors_and_edge_cases.t
CommitLineData
013b1897 1use strict;
2use warnings;
3
efd3d14c 4use Test::More tests => 48;
013b1897 5use Test::Exception;
6
efd3d14c 7use Class::MOP;
22286063 8
9{
10 dies_ok {
11 Class::MOP::Class->initialize();
12 } '... initialize requires a name parameter';
13
14 dies_ok {
15 Class::MOP::Class->initialize('');
16 } '... initialize requires a name valid parameter';
17
18 dies_ok {
19 Class::MOP::Class->initialize(bless {} => 'Foo');
20 } '... initialize requires an unblessed parameter'
21}
22
23{
24 dies_ok {
25 Class::MOP::Class->construct_class_instance();
26 } '... construct_class_instance requires an :package parameter';
27
28 dies_ok {
29 Class::MOP::Class->construct_class_instance(':package' => undef);
30 } '... construct_class_instance requires a defined :package parameter';
31
32 dies_ok {
33 Class::MOP::Class->construct_class_instance(':package' => '');
34 } '... construct_class_instance requires a valid :package parameter';
35}
36
37
38{
39 dies_ok {
40 Class::MOP::Class->create();
41 } '... create requires an package_name parameter';
42
43 dies_ok {
44 Class::MOP::Class->create(undef);
45 } '... create requires a defined package_name parameter';
46
47 dies_ok {
48 Class::MOP::Class->create('');
49 } '... create requires a valid package_name parameter';
50
51 throws_ok {
52 Class::MOP::Class->create('+++');
53 } qr/^creation of \+\+\+ failed/, '... create requires a valid package_name parameter';
54
55}
56
57{
58 dies_ok {
59 Class::MOP::Class->clone_object(1);
60 } '... can only clone instances';
61
62 dies_ok {
63 Class::MOP::Class->clone_instance(1);
64 } '... can only clone instances';
65}
66
67{
68 dies_ok {
69 Class::MOP::Class->add_method();
70 } '... add_method dies as expected';
71
72 dies_ok {
73 Class::MOP::Class->add_method('');
74 } '... add_method dies as expected';
75
76 dies_ok {
77 Class::MOP::Class->add_method('foo' => 'foo');
78 } '... add_method dies as expected';
79
80 dies_ok {
81 Class::MOP::Class->add_method('foo' => []);
82 } '... add_method dies as expected';
83}
84
85{
86 dies_ok {
87 Class::MOP::Class->alias_method();
88 } '... alias_method dies as expected';
89
90 dies_ok {
91 Class::MOP::Class->alias_method('');
92 } '... alias_method dies as expected';
93
94 dies_ok {
95 Class::MOP::Class->alias_method('foo' => 'foo');
96 } '... alias_method dies as expected';
97
98 dies_ok {
99 Class::MOP::Class->alias_method('foo' => []);
100 } '... alias_method dies as expected';
101}
102
103{
104 dies_ok {
105 Class::MOP::Class->has_method();
106 } '... has_method dies as expected';
107
108 dies_ok {
109 Class::MOP::Class->has_method('');
110 } '... has_method dies as expected';
111}
112
113{
114 dies_ok {
115 Class::MOP::Class->get_method();
116 } '... get_method dies as expected';
117
118 dies_ok {
119 Class::MOP::Class->get_method('');
120 } '... get_method dies as expected';
121}
122
123{
124 dies_ok {
125 Class::MOP::Class->remove_method();
126 } '... remove_method dies as expected';
127
128 dies_ok {
129 Class::MOP::Class->remove_method('');
130 } '... remove_method dies as expected';
131}
132
133{
134 dies_ok {
135 Class::MOP::Class->find_all_methods_by_name();
136 } '... find_all_methods_by_name dies as expected';
137
138 dies_ok {
139 Class::MOP::Class->find_all_methods_by_name('');
140 } '... find_all_methods_by_name dies as expected';
141}
142
143{
144 dies_ok {
145 Class::MOP::Class->add_attribute(bless {} => 'Foo');
146 } '... add_attribute dies as expected';
147}
148
149
150{
151 dies_ok {
152 Class::MOP::Class->has_attribute();
153 } '... has_attribute dies as expected';
154
155 dies_ok {
156 Class::MOP::Class->has_attribute('');
157 } '... has_attribute dies as expected';
158}
159
160{
161 dies_ok {
162 Class::MOP::Class->get_attribute();
163 } '... get_attribute dies as expected';
164
165 dies_ok {
166 Class::MOP::Class->get_attribute('');
167 } '... get_attribute dies as expected';
168}
169
170{
171 dies_ok {
172 Class::MOP::Class->remove_attribute();
173 } '... remove_attribute dies as expected';
174
175 dies_ok {
176 Class::MOP::Class->remove_attribute('');
177 } '... remove_attribute dies as expected';
178}
179
180{
181 dies_ok {
58d75218 182 Class::MOP::Class->add_package_symbol();
183 } '... add_package_symbol dies as expected';
22286063 184
185 dies_ok {
58d75218 186 Class::MOP::Class->add_package_symbol('');
187 } '... add_package_symbol dies as expected';
22286063 188
189 dies_ok {
58d75218 190 Class::MOP::Class->add_package_symbol('foo');
191 } '... add_package_symbol dies as expected';
22286063 192
193 dies_ok {
58d75218 194 Class::MOP::Class->add_package_symbol('&foo');
195 } '... add_package_symbol dies as expected';
22286063 196
6d5355c3 197# throws_ok {
58d75218 198# Class::MOP::Class->meta->add_package_symbol('@-');
6d5355c3 199# } qr/^Could not create package variable \(\@\-\) because/,
58d75218 200# '... add_package_symbol dies as expected';
22286063 201}
202
203{
204 dies_ok {
58d75218 205 Class::MOP::Class->has_package_symbol();
206 } '... has_package_symbol dies as expected';
22286063 207
208 dies_ok {
58d75218 209 Class::MOP::Class->has_package_symbol('');
210 } '... has_package_symbol dies as expected';
22286063 211
212 dies_ok {
58d75218 213 Class::MOP::Class->has_package_symbol('foo');
214 } '... has_package_symbol dies as expected';
22286063 215}
216
217{
218 dies_ok {
58d75218 219 Class::MOP::Class->get_package_symbol();
220 } '... get_package_symbol dies as expected';
22286063 221
222 dies_ok {
58d75218 223 Class::MOP::Class->get_package_symbol('');
224 } '... get_package_symbol dies as expected';
22286063 225
226 dies_ok {
58d75218 227 Class::MOP::Class->get_package_symbol('foo');
88dd563c 228 } '... get_package_symbol dies as expected';
22286063 229}
230
231{
232 dies_ok {
58d75218 233 Class::MOP::Class->remove_package_symbol();
234 } '... remove_package_symbol dies as expected';
22286063 235
236 dies_ok {
58d75218 237 Class::MOP::Class->remove_package_symbol('');
238 } '... remove_package_symbol dies as expected';
22286063 239
240 dies_ok {
58d75218 241 Class::MOP::Class->remove_package_symbol('foo');
242 } '... remove_package_symbol dies as expected';
22286063 243}
244