use if 'Mouse' eq 'Moose',
'Test::More' => skip_all => 'Moose does nots support strict constructor';
use Test::More;
+use Test::Mouse;
use Test::Exception;
{
default => 42,
);
- __PACKAGE__->meta->make_immutable(strict_constructor => 1);
+ __PACKAGE__->meta->strict_constructor(1);
+}
+{
+ package MySubClass;
+ use Mouse;
+ extends 'MyClass';
}
-lives_and {
- my $o = MyClass->new(foo => 1);
- isa_ok($o, 'MyClass');
- is $o->baz, 42;
-} 'correc use of the constructor';
-
-lives_and {
- my $o = MyClass->new(foo => 1, baz => 10);
- isa_ok($o, 'MyClass');
- is $o->baz, 10;
-} 'correc use of the constructor';
-
-
-throws_ok {
- MyClass->new(foo => 1, hoge => 42);
-} qr/\b hoge \b/xms;
-
-throws_ok {
- MyClass->new(foo => 1, bar => 42);
-} qr/\b bar \b/xms, "init_arg => undef";
-
-
-throws_ok {
- MyClass->new(aaa => 1, bbb => 2, ccc => 3);
-} qr/\b aaa \b/xms, $@;
-
-throws_ok {
- MyClass->new(aaa => 1, bbb => 2, ccc => 3);
-} qr/\b bbb \b/xms, $@;
-
-throws_ok {
- MyClass->new(aaa => 1, bbb => 2, ccc => 3);
-} qr/\b ccc \b/xms, $@;
+with_immutable sub {
+ lives_and {
+ my $o = MyClass->new(foo => 1);
+ isa_ok($o, 'MyClass');
+ is $o->baz, 42;
+ } 'correc use of the constructor';
+
+ lives_and {
+ my $o = MyClass->new(foo => 1, baz => 10);
+ isa_ok($o, 'MyClass');
+ is $o->baz, 10;
+ } 'correc use of the constructor';
+
+
+ throws_ok {
+ MyClass->new(foo => 1, hoge => 42);
+ } qr/\b hoge \b/xms;
+
+ throws_ok {
+ MyClass->new(foo => 1, bar => 42);
+ } qr/\b bar \b/xms, "init_arg => undef";
+
+
+ eval {
+ MyClass->new(aaa => 1, bbb => 2, ccc => 3);
+ };
+ like $@, qr/\b aaa \b/xms;
+ like $@, qr/\b bbb \b/xms;
+ like $@, qr/\b ccc \b/xms;
+
+ eval {
+ MySubClass->new(aaa => 1, bbb => 2, ccc => 3);
+ };
+ like $@, qr/\b aaa \b/xms;
+ like $@, qr/\b bbb \b/xms;
+ like $@, qr/\b ccc \b/xms;
+}, qw(MyClass MySubClass);
done_testing;