allow parameterized types to customize their messages
[gitmo/MooseX-Dependent.git] / t / 08-custom-messages.t
diff --git a/t/08-custom-messages.t b/t/08-custom-messages.t
new file mode 100644 (file)
index 0000000..b53eb6d
--- /dev/null
@@ -0,0 +1,24 @@
+use strict;
+use warnings;
+
+use Test::More;
+use MooseX::Types -declare=>[qw( SizedArray )];
+use MooseX::Types::Parameterizable qw(Parameterizable);
+use MooseX::Types::Moose qw( Int ArrayRef );
+
+ok subtype(
+    SizedArray,
+    as Parameterizable[ArrayRef,Int],
+    where {
+        my ($value, $max) = @_;
+        @$value > $max
+    },
+    message {
+        my($value, $max) = @_;
+        return sprintf('%d > %d', scalar(@$value), $max);
+    }
+), 'Created parameterized type';
+
+is SizedArray([3])->get_message([1..4]), q{4 > 3}, 'custom message';
+
+done_testing;