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