1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
=pod
=encoding utf-8
=head1 PURPOSE
Checks Type::Tiny works accepts strings of Perl code as constraints.
=head1 AUTHOR
Toby Inkster E<lt>tobyink@cpan.orgE<gt>.
=head1 COPYRIGHT AND LICENCE
This software is copyright (c) 2017-2023 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
use strict;
use warnings;
use Types::Standard -types;
my $Str = Str->where( 'length($_) > 0' );
my $Arr = ArrayRef->where( '@$_ > 0' );
my $Hash = HashRef->where( 'keys(%$_) > 0' );
use Test::More;
use Test::Fatal;
is(
exception { $Str->assert_valid( 'u' ) },
undef,
'non-empty string, okay',
);
isa_ok(
exception { $Str->assert_valid( '' ) },
'Error::TypeTiny',
'result of empty string',
);
is(
exception { $Arr->assert_valid( [undef] ) },
undef,
'non-empty arrayref, okay',
);
isa_ok(
exception { $Arr->assert_valid( [] ) },
'Error::TypeTiny',
'result of empty arrayref',
);
is(
exception { $Hash->assert_valid( { '' => undef } ) },
undef,
'non-empty hashref, okay',
);
isa_ok(
exception { $Hash->assert_valid( +{} ) },
'Error::TypeTiny',
'result of empty hashref',
);
done_testing;
|