rename *_package_variable to *_package_symbol;
[gitmo/Class-MOP.git] / t / 016_class_errors_and_edge_cases.t
CommitLineData
013b1897 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6d5355c3 6use Test::More tests => 52;
013b1897 7use Test::Exception;
8
9BEGIN {
10 use_ok('Class::MOP');
22286063 11}
12
13{
14 dies_ok {
15 Class::MOP::Class->initialize();
16 } '... initialize requires a name parameter';
17
18 dies_ok {
19 Class::MOP::Class->initialize('');
20 } '... initialize requires a name valid parameter';
21
22 dies_ok {
23 Class::MOP::Class->initialize(bless {} => 'Foo');
24 } '... initialize requires an unblessed parameter'
25}
26
27{
28 dies_ok {
29 Class::MOP::Class->construct_class_instance();
30 } '... construct_class_instance requires an :package parameter';
31
32 dies_ok {
33 Class::MOP::Class->construct_class_instance(':package' => undef);
34 } '... construct_class_instance requires a defined :package parameter';
35
36 dies_ok {
37 Class::MOP::Class->construct_class_instance(':package' => '');
38 } '... construct_class_instance requires a valid :package parameter';
39}
40
41
42{
43 dies_ok {
44 Class::MOP::Class->create();
45 } '... create requires an package_name parameter';
46
47 dies_ok {
48 Class::MOP::Class->create(undef);
49 } '... create requires a defined package_name parameter';
50
51 dies_ok {
52 Class::MOP::Class->create('');
53 } '... create requires a valid package_name parameter';
54
55 throws_ok {
56 Class::MOP::Class->create('+++');
57 } qr/^creation of \+\+\+ failed/, '... create requires a valid package_name parameter';
58
59}
60
61{
62 dies_ok {
63 Class::MOP::Class->clone_object(1);
64 } '... can only clone instances';
65
66 dies_ok {
67 Class::MOP::Class->clone_instance(1);
68 } '... can only clone instances';
69}
70
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('');
78 } '... add_method dies as expected';
79
80 dies_ok {
81 Class::MOP::Class->add_method('foo' => 'foo');
82 } '... add_method dies as expected';
83
84 dies_ok {
85 Class::MOP::Class->add_method('foo' => []);
86 } '... add_method dies as expected';
87}
88
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('');
96 } '... alias_method dies as expected';
97
98 dies_ok {
99 Class::MOP::Class->alias_method('foo' => 'foo');
100 } '... alias_method dies as expected';
101
102 dies_ok {
103 Class::MOP::Class->alias_method('foo' => []);
104 } '... alias_method dies as expected';
105}
106
107{
108 dies_ok {
109 Class::MOP::Class->has_method();
110 } '... has_method dies as expected';
111
112 dies_ok {
113 Class::MOP::Class->has_method('');
114 } '... has_method dies as expected';
115}
116
117{
118 dies_ok {
119 Class::MOP::Class->get_method();
120 } '... get_method dies as expected';
121
122 dies_ok {
123 Class::MOP::Class->get_method('');
124 } '... get_method dies as expected';
125}
126
127{
128 dies_ok {
129 Class::MOP::Class->remove_method();
130 } '... remove_method dies as expected';
131
132 dies_ok {
133 Class::MOP::Class->remove_method('');
134 } '... remove_method dies as expected';
135}
136
137{
138 dies_ok {
139 Class::MOP::Class->find_all_methods_by_name();
140 } '... find_all_methods_by_name dies as expected';
141
142 dies_ok {
143 Class::MOP::Class->find_all_methods_by_name('');
144 } '... find_all_methods_by_name dies as expected';
145}
146
147{
148 dies_ok {
149 Class::MOP::Class->add_attribute(bless {} => 'Foo');
150 } '... add_attribute dies as expected';
151}
152
153
154{
155 dies_ok {
156 Class::MOP::Class->has_attribute();
157 } '... has_attribute dies as expected';
158
159 dies_ok {
160 Class::MOP::Class->has_attribute('');
161 } '... has_attribute dies as expected';
162}
163
164{
165 dies_ok {
166 Class::MOP::Class->get_attribute();
167 } '... get_attribute dies as expected';
168
169 dies_ok {
170 Class::MOP::Class->get_attribute('');
171 } '... get_attribute dies as expected';
172}
173
174{
175 dies_ok {
176 Class::MOP::Class->remove_attribute();
177 } '... remove_attribute dies as expected';
178
179 dies_ok {
180 Class::MOP::Class->remove_attribute('');
181 } '... remove_attribute dies as expected';
182}
183
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('');
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
197 dies_ok {
58d75218 198 Class::MOP::Class->add_package_symbol('&foo');
199 } '... add_package_symbol dies as expected';
22286063 200
6d5355c3 201# throws_ok {
58d75218 202# Class::MOP::Class->meta->add_package_symbol('@-');
6d5355c3 203# } qr/^Could not create package variable \(\@\-\) because/,
58d75218 204# '... add_package_symbol dies as expected';
22286063 205}
206
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('');
214 } '... has_package_symbol dies as expected';
22286063 215
216 dies_ok {
58d75218 217 Class::MOP::Class->has_package_symbol('foo');
218 } '... has_package_symbol dies as expected';
22286063 219
220 dies_ok {
58d75218 221 Class::MOP::Class->has_package_symbol('&foo');
222 } '... has_package_symbol dies as expected';
22286063 223}
224
225{
226 dies_ok {
58d75218 227 Class::MOP::Class->get_package_symbol();
228 } '... get_package_symbol dies as expected';
22286063 229
230 dies_ok {
58d75218 231 Class::MOP::Class->get_package_symbol('');
232 } '... get_package_symbol dies as expected';
22286063 233
234 dies_ok {
58d75218 235 Class::MOP::Class->get_package_symbol('foo');
236 } '... get_package_symbol dies as expected';
22286063 237
238 dies_ok {
58d75218 239 Class::MOP::Class->get_package_symbol('&foo');
240 } '... get_package_symbol dies as expected';
22286063 241}
242
243{
244 dies_ok {
58d75218 245 Class::MOP::Class->remove_package_symbol();
246 } '... remove_package_symbol dies as expected';
22286063 247
248 dies_ok {
58d75218 249 Class::MOP::Class->remove_package_symbol('');
250 } '... remove_package_symbol dies as expected';
22286063 251
252 dies_ok {
58d75218 253 Class::MOP::Class->remove_package_symbol('foo');
254 } '... remove_package_symbol dies as expected';
22286063 255
256 dies_ok {
58d75218 257 Class::MOP::Class->remove_package_symbol('&foo');
258 } '... remove_package_symbol dies as expected';
22286063 259}
260