#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use Test::Exception;
{
package TypeCheck::RequiredOptional;
use strict;
use warnings;
use Method::Signatures;
method new ($class:) { bless {}, $class; }
method required_named ( Int :$foo! ) {}
method optional_named ( Int :$foo ) {}
method required_positional ( Int $foo ) {}
method optional_positional ( Int $foo? ) {}
}
our $tester = TypeCheck::RequiredOptional->new;
lives_ok { $tester->optional_named() } 'no type error when failing to pass optional named arg';
lives_ok { $tester->optional_positional() } 'no type error when failing to pass optional positional arg';
throws_ok { $tester->required_named() } qr/missing required argument/,
'proper error when failing to pass required named arg';
throws_ok { $tester->required_positional() } qr/missing required argument/,
'proper error when failing to pass required positional arg';
done_testing;