Commit | Line | Data |
d885d85e |
1 | use strictures 1; |
2 | use Test::More; |
5fe1827a |
3 | use Test::Fatal; |
d885d85e |
4 | |
5 | { |
6 | package ClassWithTypes; |
7 | $INC{'ClassWithTypes.pm'} = __FILE__; |
8 | use Moo; |
9 | use MooX::Types::MooseLike::Base qw(ArrayRef); |
10 | |
11 | has split_comma => (is => 'ro', isa => ArrayRef, coerce => sub { [ split /,/, $_[0] ] } ); |
12 | has split_space => (is => 'ro', isa => ArrayRef, coerce => sub { [ split / /, $_[0] ] } ); |
5fe1827a |
13 | has bad_coerce => (is => 'ro', isa => ArrayRef, coerce => sub { $_[0] } ); |
d885d85e |
14 | } |
15 | |
16 | my $o = ClassWithTypes->new(split_comma => 'a,b c,d', split_space => 'a,b c,d'); |
17 | is_deeply $o->split_comma, ['a','b c','d'], 'coerce with prebuilt type works'; |
18 | is_deeply $o->split_space, ['a,b','c,d'], ' ... and with different coercion on same type'; |
19 | |
20 | { |
21 | package MooseSubclassWithTypes; |
22 | use Moose; |
23 | extends 'ClassWithTypes'; |
24 | } |
25 | |
26 | my $o2 = MooseSubclassWithTypes->new(split_comma => 'a,b c,d', split_space => 'a,b c,d'); |
27 | is_deeply $o2->split_comma, ['a','b c','d'], 'moose subclass has correct coercion'; |
28 | is_deeply $o2->split_space, ['a,b','c,d'], ' ... and with different coercion on same type'; |
29 | |
5fe1827a |
30 | like |
31 | exception { MooseSubclassWithTypes->new(bad_coerce => 1) }, |
32 | qr/Validation failed for 'ArrayRef' with value/, |
33 | 'inflated type has correct name'; |
34 | |
d885d85e |
35 | done_testing; |