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