convert all uses of Test::Exception to Test::Fatal.
[gitmo/Moose.git] / t / 040_type_constraints / 022_custom_type_errors.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7 use Test::Fatal;
8
9 {
10     package Animal;
11     use Moose;
12     use Moose::Util::TypeConstraints;
13
14     subtype 'Natural' => as 'Int' => where { $_ > 0 } =>
15         message {"This number ($_) is not a positive integer!"};
16
17     subtype 'NaturalLessThanTen' => as 'Natural' => where { $_ < 10 } =>
18         message {"This number ($_) is not less than ten!"};
19
20     has leg_count => (
21         is      => 'rw',
22         isa     => 'NaturalLessThanTen',
23         lazy    => 1,
24         default => 0,
25     );
26 }
27
28 ok ! exception { my $goat = Animal->new( leg_count => 4 ) },
29 '... no errors thrown, value is good';
30 ok ! exception { my $spider = Animal->new( leg_count => 8 ) },
31 '... no errors thrown, value is good';
32
33 like exception { my $fern = Animal->new( leg_count => 0 ) },
34 qr/This number \(0\) is not less than ten!/,
35     'gave custom supertype error message on new';
36
37 like exception { my $centipede = Animal->new( leg_count => 30 ) },
38 qr/This number \(30\) is not less than ten!/,
39     'gave custom subtype error message on new';
40
41 my $chimera;
42 ok ! exception { $chimera = Animal->new( leg_count => 4 ) },
43 '... no errors thrown, value is good';
44
45 like exception { $chimera->leg_count(0) },
46 qr/This number \(0\) is not less than ten!/,
47     'gave custom supertype error message on set to 0';
48
49 like exception { $chimera->leg_count(16) },
50 qr/This number \(16\) is not less than ten!/,
51     'gave custom subtype error message on set to 16';
52
53 my $gimp = eval { Animal->new() };
54 is( $@, '', '... no errors thrown, value is good' );
55
56 like exception { $gimp->leg_count },
57 qr/This number \(0\) is not less than ten!/,
58     'gave custom supertype error message on lazy set to 0';
59
60 done_testing;