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