7 use lib "$FindBin::Bin/lib";
8 use TestWrapper TestLibrary => [qw( NonEmptyStr IntArrayRef )],
9 Moose => [qw( Str Int )];
12 [ 'NonEmptyStr', 12, "12", [], "foobar", "" ],
13 [ 'IntArrayRef', 12, [12], {}, [17, 23], {} ],
16 plan tests => (@tests * 8);
18 # new array ref so we can safely shift from it
19 for my $data (map { [@$_] } @tests) {
20 my $type = shift @$data;
24 ok my $code = __PACKAGE__->can($type), "$type() was exported";
25 is $code->(), "TestLibrary::$type", "$type() returned correct type name";
28 # coercion handler export
30 my ($coerce, $coercion_result, $cannot_coerce) = map { shift @$data } 1 .. 3;
31 ok my $code = __PACKAGE__->can("to_$type"), "to_$type() coercion was exported";
32 is_deeply scalar $code->($coerce), $coercion_result, "to_$type() coercion works";
33 ok ! $code->($cannot_coerce), "to_$type() returns false on invalid value";
38 my ($valid, $invalid) = map { shift @$data } 1 .. 2;
39 ok my $code = __PACKAGE__->can("is_$type"), "is_$type() check was exported";
40 ok $code->($valid), "is_$type() check true on valid value";
41 ok ! $code->($invalid), "is_$type() check false on invalid value";