X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=t%2F001_mouse%2F068-strict-constructor.t;fp=t%2F001_mouse%2F068-strict-constructor.t;h=3a325a8f396754e25643f059ac18489851794158;hp=cd38d21b8e85f37c791ed44848db6afc9b042273;hb=fb4ddd8813b802fcd34aef915c5e7ce3d10e3022;hpb=51ca4f9f1b8d9f7a58641300be556c775af7b032 diff --git a/t/001_mouse/068-strict-constructor.t b/t/001_mouse/068-strict-constructor.t index cd38d21..3a325a8 100644 --- a/t/001_mouse/068-strict-constructor.t +++ b/t/001_mouse/068-strict-constructor.t @@ -5,6 +5,7 @@ use warnings; use if 'Mouse' eq 'Moose', 'Test::More' => skip_all => 'Moose does nots support strict constructor'; use Test::More; +use Test::Mouse; use Test::Exception; { @@ -25,41 +26,50 @@ 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;