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