016_class_errors_and_edge_cases.t [plain text]
use strict;
use warnings;
use Test::More;
use Test::Exception;
use Class::MOP;
{
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->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->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_symbol();
} '... add_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->add_package_symbol('');
} '... add_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->add_package_symbol('foo');
} '... add_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->add_package_symbol('&foo');
} '... add_package_symbol dies as expected';
# throws_ok {
# Class::MOP::Class->meta->add_package_symbol('@-');
# } qr/^Could not create package variable \(\@\-\) because/,
# '... add_package_symbol dies as expected';
}
{
dies_ok {
Class::MOP::Class->has_package_symbol();
} '... has_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->has_package_symbol('');
} '... has_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->has_package_symbol('foo');
} '... has_package_symbol dies as expected';
}
{
dies_ok {
Class::MOP::Class->get_package_symbol();
} '... get_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->get_package_symbol('');
} '... get_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->get_package_symbol('foo');
} '... get_package_symbol dies as expected';
}
{
dies_ok {
Class::MOP::Class->remove_package_symbol();
} '... remove_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->remove_package_symbol('');
} '... remove_package_symbol dies as expected';
dies_ok {
Class::MOP::Class->remove_package_symbol('foo');
} '... remove_package_symbol dies as expected';
}
done_testing;