X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F016_class_errors_and_edge_cases.t;h=ec90053ef4f72a835a6a8e506c883026d9a607a3;hb=d82060febb1988d53335b31f829bc50828ccc588;hp=b9b39156e7f7fa2ddda71f3ea0f913e493cbe0a0;hpb=013b1897ada42ebdd970371868cc3679d3a49344;p=gitmo%2FClass-MOP.git diff --git a/t/016_class_errors_and_edge_cases.t b/t/016_class_errors_and_edge_cases.t index b9b3915..ec90053 100644 --- a/t/016_class_errors_and_edge_cases.t +++ b/t/016_class_errors_and_edge_cases.t @@ -3,9 +3,258 @@ use strict; use warnings; -use Test::More no_plan => 1; +use Test::More tests => 53; use Test::Exception; BEGIN { use_ok('Class::MOP'); -} \ No newline at end of file +} + +{ + dies_ok { + Class::MOP::Class->initialize(); + } '... initialize requires a name parameter'; + + dies_ok { + Class::MOP::Class->initialize(''); + } '... initialize requires a name valid parameter'; + + dies_ok { + Class::MOP::Class->initialize(bless {} => 'Foo'); + } '... initialize requires an unblessed parameter' +} + +{ + dies_ok { + Class::MOP::Class->construct_class_instance(); + } '... construct_class_instance requires an :package parameter'; + + dies_ok { + Class::MOP::Class->construct_class_instance(':package' => undef); + } '... construct_class_instance requires a defined :package parameter'; + + dies_ok { + Class::MOP::Class->construct_class_instance(':package' => ''); + } '... construct_class_instance requires a valid :package parameter'; +} + + +{ + dies_ok { + Class::MOP::Class->create(); + } '... create requires an package_name parameter'; + + dies_ok { + Class::MOP::Class->create(undef); + } '... create requires a defined package_name parameter'; + + dies_ok { + Class::MOP::Class->create(''); + } '... create requires a valid package_name parameter'; + + throws_ok { + Class::MOP::Class->create('+++'); + } qr/^creation of \+\+\+ failed/, '... create requires a valid package_name parameter'; + +} + +{ + dies_ok { + Class::MOP::Class->clone_object(1); + } '... can only clone instances'; + + dies_ok { + Class::MOP::Class->clone_instance(1); + } '... can only clone instances'; +} + +{ + dies_ok { + Class::MOP::Class->add_method(); + } '... add_method dies as expected'; + + dies_ok { + Class::MOP::Class->add_method(''); + } '... add_method dies as expected'; + + dies_ok { + Class::MOP::Class->add_method('foo' => 'foo'); + } '... add_method dies as expected'; + + dies_ok { + Class::MOP::Class->add_method('foo' => []); + } '... add_method dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->alias_method(); + } '... alias_method dies as expected'; + + dies_ok { + Class::MOP::Class->alias_method(''); + } '... alias_method dies as expected'; + + dies_ok { + Class::MOP::Class->alias_method('foo' => 'foo'); + } '... alias_method dies as expected'; + + dies_ok { + Class::MOP::Class->alias_method('foo' => []); + } '... alias_method dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->has_method(); + } '... has_method dies as expected'; + + dies_ok { + Class::MOP::Class->has_method(''); + } '... has_method dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->get_method(); + } '... get_method dies as expected'; + + dies_ok { + Class::MOP::Class->get_method(''); + } '... get_method dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->remove_method(); + } '... remove_method dies as expected'; + + dies_ok { + Class::MOP::Class->remove_method(''); + } '... remove_method dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->find_all_methods_by_name(); + } '... find_all_methods_by_name dies as expected'; + + dies_ok { + Class::MOP::Class->find_all_methods_by_name(''); + } '... find_all_methods_by_name dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->add_attribute(bless {} => 'Foo'); + } '... add_attribute dies as expected'; +} + + +{ + dies_ok { + Class::MOP::Class->has_attribute(); + } '... has_attribute dies as expected'; + + dies_ok { + Class::MOP::Class->has_attribute(''); + } '... has_attribute dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->get_attribute(); + } '... get_attribute dies as expected'; + + dies_ok { + Class::MOP::Class->get_attribute(''); + } '... get_attribute dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->remove_attribute(); + } '... remove_attribute dies as expected'; + + dies_ok { + Class::MOP::Class->remove_attribute(''); + } '... remove_attribute dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->add_package_variable(); + } '... add_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->add_package_variable(''); + } '... add_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->add_package_variable('foo'); + } '... add_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->add_package_variable('&foo'); + } '... add_package_variable dies as expected'; + + throws_ok { + Class::MOP::Class->meta->add_package_variable('@-'); + } qr/^Could not create package variable \(\@\-\) because/, + '... add_package_variable dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->has_package_variable(); + } '... has_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->has_package_variable(''); + } '... has_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->has_package_variable('foo'); + } '... has_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->has_package_variable('&foo'); + } '... has_package_variable dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->get_package_variable(); + } '... get_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->get_package_variable(''); + } '... get_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->get_package_variable('foo'); + } '... get_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->get_package_variable('&foo'); + } '... get_package_variable dies as expected'; +} + +{ + dies_ok { + Class::MOP::Class->remove_package_variable(); + } '... remove_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->remove_package_variable(''); + } '... remove_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->remove_package_variable('foo'); + } '... remove_package_variable dies as expected'; + + dies_ok { + Class::MOP::Class->remove_package_variable('&foo'); + } '... remove_package_variable dies as expected'; +} +