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