X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F001_mouse%2F068-strict-constructor.t;h=3a325a8f396754e25643f059ac18489851794158;hb=HEAD;hp=801118c07fc63e655d73d99262d909c238c8e480;hpb=29cb82b7c53a275a299076477c09d5cbe4f2d160;p=gitmo%2FMouse.git diff --git a/t/001_mouse/068-strict-constructor.t b/t/001_mouse/068-strict-constructor.t index 801118c..3a325a8 100644 --- a/t/001_mouse/068-strict-constructor.t +++ b/t/001_mouse/068-strict-constructor.t @@ -2,7 +2,10 @@ use strict; 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; { @@ -18,32 +21,55 @@ use Test::Exception; init_arg => undef, ); - __PACKAGE__->meta->make_immutable(strict_constructor => 1); + has baz => ( + is => 'rw', + default => 42, + ); + + __PACKAGE__->meta->strict_constructor(1); +} +{ + package MySubClass; + use Mouse; + extends 'MyClass'; } -lives_ok { - MyClass->new(foo => 1); -}; +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"; + 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; + 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; -throws_ok { - MyClass->new(aaa => 1, bbb => 2, ccc => 3); -} 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;