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