make CMOP::Class->clone_instance private
[gitmo/Class-MOP.git] / t / 016_class_errors_and_edge_cases.t
1 use strict;
2 use warnings;
3
4 use Test::More tests => 47;
5 use Test::Exception;
6
7 use Class::MOP;
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
63 {
64     dies_ok {
65         Class::MOP::Class->add_method();
66     } '... add_method dies as expected';
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('foo' => 'foo');
74     } '... add_method dies as expected';
75     
76     dies_ok {
77         Class::MOP::Class->add_method('foo' => []);
78     } '... add_method dies as expected';     
79 }
80
81 {
82     dies_ok {
83         Class::MOP::Class->alias_method();
84     } '... alias_method dies as expected';
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('foo' => 'foo');
92     } '... alias_method dies as expected';
93     
94     dies_ok {
95         Class::MOP::Class->alias_method('foo' => []);
96     } '... alias_method dies as expected';     
97 }
98
99 {
100     dies_ok {
101         Class::MOP::Class->has_method();
102     } '... has_method dies as expected';
103     
104     dies_ok {
105         Class::MOP::Class->has_method('');
106     } '... has_method dies as expected';
107 }
108
109 {
110     dies_ok {
111         Class::MOP::Class->get_method();
112     } '... get_method dies as expected';
113     
114     dies_ok {
115         Class::MOP::Class->get_method('');
116     } '... get_method dies as expected';
117 }
118
119 {
120     dies_ok {
121         Class::MOP::Class->remove_method();
122     } '... remove_method dies as expected';
123     
124     dies_ok {
125         Class::MOP::Class->remove_method('');
126     } '... remove_method dies as expected';
127 }
128
129 {
130     dies_ok {
131         Class::MOP::Class->find_all_methods_by_name();
132     } '... find_all_methods_by_name dies as expected';
133     
134     dies_ok {
135         Class::MOP::Class->find_all_methods_by_name('');
136     } '... find_all_methods_by_name dies as expected';
137 }
138
139 {
140     dies_ok {
141         Class::MOP::Class->add_attribute(bless {} => 'Foo');
142     } '... add_attribute dies as expected';
143 }
144
145
146 {
147     dies_ok {
148         Class::MOP::Class->has_attribute();
149     } '... has_attribute dies as expected';
150     
151     dies_ok {
152         Class::MOP::Class->has_attribute('');
153     } '... has_attribute dies as expected';
154 }
155
156 {
157     dies_ok {
158         Class::MOP::Class->get_attribute();
159     } '... get_attribute dies as expected';
160     
161     dies_ok {
162         Class::MOP::Class->get_attribute('');
163     } '... get_attribute dies as expected';
164 }
165
166 {
167     dies_ok {
168         Class::MOP::Class->remove_attribute();
169     } '... remove_attribute dies as expected';
170     
171     dies_ok {
172         Class::MOP::Class->remove_attribute('');
173     } '... remove_attribute dies as expected';
174 }
175
176 {
177     dies_ok {
178         Class::MOP::Class->add_package_symbol();
179     } '... add_package_symbol dies as expected';
180     
181     dies_ok {
182         Class::MOP::Class->add_package_symbol('');
183     } '... add_package_symbol dies as expected';
184     
185     dies_ok {
186         Class::MOP::Class->add_package_symbol('foo');
187     } '... add_package_symbol dies as expected';  
188     
189     dies_ok {
190         Class::MOP::Class->add_package_symbol('&foo');
191     } '... add_package_symbol dies as expected';      
192     
193 #    throws_ok {
194 #        Class::MOP::Class->meta->add_package_symbol('@-');
195 #    } qr/^Could not create package variable \(\@\-\) because/, 
196 #      '... add_package_symbol dies as expected';    
197 }
198
199 {
200     dies_ok {
201         Class::MOP::Class->has_package_symbol();
202     } '... has_package_symbol dies as expected';
203
204     dies_ok {
205         Class::MOP::Class->has_package_symbol('');
206     } '... has_package_symbol dies as expected';
207
208     dies_ok {
209         Class::MOP::Class->has_package_symbol('foo');
210     } '... has_package_symbol dies as expected';  
211 }
212
213 {
214     dies_ok {
215         Class::MOP::Class->get_package_symbol();
216     } '... get_package_symbol dies as expected';
217
218     dies_ok {
219         Class::MOP::Class->get_package_symbol('');
220     } '... get_package_symbol dies as expected';
221
222     dies_ok {
223         Class::MOP::Class->get_package_symbol('foo');
224     } '... get_package_symbol dies as expected';   
225 }
226
227 {
228     dies_ok {
229         Class::MOP::Class->remove_package_symbol();
230     } '... remove_package_symbol dies as expected';
231
232     dies_ok {
233         Class::MOP::Class->remove_package_symbol('');
234     } '... remove_package_symbol dies as expected';
235
236     dies_ok {
237         Class::MOP::Class->remove_package_symbol('foo');
238     } '... remove_package_symbol dies as expected';  
239 }
240