1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
use strict;
use warnings;
use Test::More;
use Test::Fatal;
use Moose();
{
my $xyz = bless [], "Bar";
my $class;
my $exception = exception {
$class = Class::MOP::Class->create("Foo", (attributes => [$xyz]));
};
like(
$exception,
qr/\QYour attribute must be an instance of Class::MOP::Mixin::AttributeCore (or a subclass)/,
"an Array ref blessed into Bar is given to create");
isa_ok(
$exception,
"Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass",
"an Array ref blessed into Bar is given to create");
is(
$exception->attribute,
$xyz,
"an Array ref blessed into Bar is given to create");
}
{
my $class = Class::MOP::Class->create("Foo");
my $exception = exception {
$class->has_attribute;
};
like(
$exception,
qr/You must define an attribute name/,
"attribute name is not given");
isa_ok(
$exception,
"Moose::Exception::MustDefineAnAttributeName",
"attribute name is not given");
is(
$exception->class_name,
'Foo',
"attribute name is not given");
}
{
my $class = Class::MOP::Class->create("Foo");
my $exception = exception {
$class->get_attribute;
};
like(
$exception,
qr/You must define an attribute name/,
"attribute name is not given");
isa_ok(
$exception,
"Moose::Exception::MustDefineAnAttributeName",
"attribute name is not given");
is(
$exception->class_name,
"Foo",
"attribute name is not given");
}
{
my $class = Class::MOP::Class->create("Foo");
my $exception = exception {
$class->remove_attribute;
};
like(
$exception,
qr/You must define an attribute name/,
"attribute name is not given");
isa_ok(
$exception,
"Moose::Exception::MustDefineAnAttributeName",
"attribute name is not given");
is(
$exception->class_name,
"Foo",
"attribute name is not given");
}
done_testing;
|