Blame t/positional/required.t

Packit Service 817997
use strict;
Packit Service 817997
use warnings;
Packit Service 817997
Packit Service 817997
use Test2::V0;
Packit Service 817997
use Test2::Plugin::NoWarnings;
Packit Service 817997
Packit Service 817997
use Params::ValidationCompiler qw( validation_for );
Packit Service 817997
use Specio::Library::Builtins;
Packit Service 817997
Packit Service 817997
{
Packit Service 817997
    my $sub = validation_for(
Packit Service 817997
        params => [
Packit Service 817997
            1,
Packit Service 817997
            {
Packit Service 817997
                type     => t('Int'),
Packit Service 817997
                optional => 1,
Packit Service 817997
            },
Packit Service 817997
        ],
Packit Service 817997
    );
Packit Service 817997
Packit Service 817997
    is(
Packit Service 817997
        dies { $sub->(42) },
Packit Service 817997
        undef,
Packit Service 817997
        'lives when given 1st param but no 2nd'
Packit Service 817997
    );
Packit Service 817997
Packit Service 817997
    is(
Packit Service 817997
        dies { $sub->( 42, 42 ) },
Packit Service 817997
        undef,
Packit Service 817997
        'lives when given 1st and 2nd params'
Packit Service 817997
    );
Packit Service 817997
Packit Service 817997
    like(
Packit Service 817997
        dies { $sub->() },
Packit Service 817997
        qr/Got 0 parameters but expected at least 1/,
Packit Service 817997
        'dies when not given any params'
Packit Service 817997
    );
Packit Service 817997
}
Packit Service 817997
Packit Service 817997
{
Packit Service 817997
    like(
Packit Service 817997
        dies {
Packit Service 817997
            validation_for(
Packit Service 817997
                params => [
Packit Service 817997
                    { optional => 1 },
Packit Service 817997
                    { type     => t('Int') },
Packit Service 817997
                ],
Packit Service 817997
            );
Packit Service 817997
        },
Packit Service 817997
        qr/\QParameter list contains an optional parameter followed by a required parameter/,
Packit Service 817997
        'cannot have positional parameters where an optional param comes before a required one'
Packit Service 817997
    );
Packit Service 817997
Packit Service 817997
    like(
Packit Service 817997
        dies {
Packit Service 817997
            validation_for(
Packit Service 817997
                params => [
Packit Service 817997
                    { default => 42 },
Packit Service 817997
                    { type    => t('Int') },
Packit Service 817997
                ],
Packit Service 817997
            );
Packit Service 817997
        },
Packit Service 817997
        qr/\QParameter list contains an optional parameter followed by a required parameter/,
Packit Service 817997
        'cannot have positional parameters where a param with a default comes before a required one'
Packit Service 817997
    );
Packit Service 817997
}
Packit Service 817997
Packit Service 817997
done_testing();