Fix comment which totally disagreed with code it commented on
[gitmo/Class-MOP.git] / t / 016_class_errors_and_edge_cases.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 48;
7 use Test::Exception;
8
9 use Class::MOP;
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 {
184         Class::MOP::Class->add_package_symbol();
185     } '... add_package_symbol dies as expected';
186     
187     dies_ok {
188         Class::MOP::Class->add_package_symbol('');
189     } '... add_package_symbol dies as expected';
190     
191     dies_ok {
192         Class::MOP::Class->add_package_symbol('foo');
193     } '... add_package_symbol dies as expected';  
194     
195     dies_ok {
196         Class::MOP::Class->add_package_symbol('&foo');
197     } '... add_package_symbol dies as expected';      
198     
199 #    throws_ok {
200 #        Class::MOP::Class->meta->add_package_symbol('@-');
201 #    } qr/^Could not create package variable \(\@\-\) because/, 
202 #      '... add_package_symbol dies as expected';    
203 }
204
205 {
206     dies_ok {
207         Class::MOP::Class->has_package_symbol();
208     } '... has_package_symbol dies as expected';
209
210     dies_ok {
211         Class::MOP::Class->has_package_symbol('');
212     } '... has_package_symbol dies as expected';
213
214     dies_ok {
215         Class::MOP::Class->has_package_symbol('foo');
216     } '... has_package_symbol dies as expected';  
217 }
218
219 {
220     dies_ok {
221         Class::MOP::Class->get_package_symbol();
222     } '... get_package_symbol dies as expected';
223
224     dies_ok {
225         Class::MOP::Class->get_package_symbol('');
226     } '... get_package_symbol dies as expected';
227
228     dies_ok {
229         Class::MOP::Class->get_package_symbol('foo');
230     } '... get_package_symbol dies as expected';   
231 }
232
233 {
234     dies_ok {
235         Class::MOP::Class->remove_package_symbol();
236     } '... remove_package_symbol dies as expected';
237
238     dies_ok {
239         Class::MOP::Class->remove_package_symbol('');
240     } '... remove_package_symbol dies as expected';
241
242     dies_ok {
243         Class::MOP::Class->remove_package_symbol('foo');
244     } '... remove_package_symbol dies as expected';  
245 }
246