version 1.0401
[p5sagit/Function-Parameters.git] / t / foreign / MooseX-Method-Signatures / undef_method_arg.t
1 #!perl
2 use strict;
3 use warnings FATAL => 'all';
4 use Test::More;
5 use Test::Fatal;
6
7 {
8     package Foo;
9     use Function::Parameters qw(:strict);
10
11     method new($class:) { bless {}, $class }
12
13     method m1(:$bar        ) { }
14     method m2(:$bar = undef) { }
15     method m3(:$bar        ) { }
16
17     method m4( $bar        ) { }
18     method m5( $bar = undef) { }
19     method m6( $bar        ) { }
20 }
21
22 my $foo = Foo->new;
23
24 is(exception { $foo->m1(bar => undef) }, undef, 'Explicitly pass undef to named implicit required arg');
25 is(exception { $foo->m2(bar => undef) }, undef, 'Explicitly pass undef to named explicit optional arg');
26 is(exception { $foo->m3(bar => undef) }, undef, 'Explicitly pass undef to named implicit required arg');
27
28 is(exception { $foo->m4(undef) }, undef, 'Explicitly pass undef to implicit required arg');
29 is(exception { $foo->m5(undef) }, undef, 'Explicitly pass undef to explicit required arg');
30 is(exception { $foo->m6(undef) }, undef, 'Explicitly pass undef to implicit required arg');
31
32 done_testing;