Skip tests for strict constructor on Moose
[gitmo/Mouse.git] / t / 001_mouse / 068-strict-constructor.t
1 #!perl
2 use strict;
3 use warnings;
4
5 use if 'Mouse' eq 'Moose',
6     'Test::More' => skip_all => 'Moose does nots support strict constructor';
7 use Test::More;
8 use Test::Exception;
9
10 {
11     package MyClass;
12     use Mouse;
13
14     has foo => (
15         is => 'rw',
16     );
17
18     has bar => (
19         is => 'rw',
20         init_arg => undef,
21     );
22
23     __PACKAGE__->meta->make_immutable(strict_constructor => 1);
24 }
25
26 lives_ok {
27     MyClass->new(foo => 1);
28 };
29
30 throws_ok {
31     MyClass->new(foo => 1, hoge => 42);
32 } qr/\b hoge \b/xms;
33
34 throws_ok {
35     MyClass->new(foo => 1, bar => 42);
36 } qr/\b bar \b/xms, "init_arg => undef";
37
38
39 throws_ok {
40     MyClass->new(aaa => 1, bbb => 2, ccc => 3);
41 } qr/\b aaa \b/xms;
42
43 throws_ok {
44     MyClass->new(aaa => 1, bbb => 2, ccc => 3);
45 } qr/\b bbb \b/xms;
46
47 throws_ok {
48     MyClass->new(aaa => 1, bbb => 2, ccc => 3);
49 } qr/\b ccc \b/xms;
50
51 done_testing;