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