add missing stopwords
[gitmo/MooseX-Types.git] / t / 21_coerce_parameterized_types.t
index dbbd5d2..4a4cf9c 100644 (file)
@@ -1,43 +1,49 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use Test::Exception;
 
-use Test::More tests => 2;
+use Test::More;
 
 BEGIN {
     package TypeLib;
-    use MooseX::Types -declare => [qw/MyType ArrayRefOfMyType/];
-    use MooseX::Types::Moose qw/ArrayRef Str/;
+    use MooseX::Types -declare => [qw/
+       MyChar MyDigit ArrayRefOfMyCharOrDigit
+    /];
+    use MooseX::Types::Moose qw/ArrayRef Str Int/;
 
-    subtype MyType, as Str, where {
+    subtype MyChar, as Str, where {
        length == 1
     };
 
-    coerce ArrayRef[MyType], from Str, via {
+    subtype MyDigit, as Int, where {
+       length == 1
+    };
+
+    coerce ArrayRef[MyChar|MyDigit], from Str, via {
        [split //]
     };
 
 # same thing with an explicit subtype
-    subtype ArrayRefOfMyType, as ArrayRef[MyType];
+    subtype ArrayRefOfMyCharOrDigit, as ArrayRef[MyChar|MyDigit];
 
-    coerce ArrayRefOfMyType, from Str, via {
+    coerce ArrayRefOfMyCharOrDigit, from Str, via {
        [split //]
     };
 }
+
 {
-    package AClass;
-    use Moose;
-    BEGIN { TypeLib->import(qw/MyType ArrayRefOfMyType/) };
+    BEGIN { TypeLib->import(qw/
+       MyChar MyDigit ArrayRefOfMyCharOrDigit/
+    ) };
     use MooseX::Types::Moose 'ArrayRef';
 
-    has parameterized => (is => 'rw', isa => ArrayRef[MyType], coerce => 1);
-    has subtype => (is => 'rw', isa => ArrayRefOfMyType, coerce => 1);
-}
-
-my $instance = AClass->new;
+    my $parameterized = ArrayRef[MyChar|MyDigit];
+    { local $::TODO = "see comments in MooseX::Types->create_arged_...";
+      ::ok( $parameterized->has_coercion, 'coercion applied to parameterized type' );
+    }
 
-lives_ok { $instance->parameterized('foo') }
-    'coercion applied to parameterized type';
+    my $subtype = ArrayRefOfMyCharOrDigit;
+    ::ok( $subtype->has_coercion, 'coercion applied to subtype' );
+}
 
-lives_ok { $instance->subtype('foo') } 'coercion applied to subtype';
+done_testing();