created regression test for type constraint change in Moose 1.05
John Napiorkowski [Thu, 27 May 2010 19:36:13 +0000 (15:36 -0400)]
t/regressions/01-is_type_of.t [new file with mode: 0644]

diff --git a/t/regressions/01-is_type_of.t b/t/regressions/01-is_type_of.t
new file mode 100644 (file)
index 0000000..ec6edec
--- /dev/null
@@ -0,0 +1,48 @@
+BEGIN {
+       use strict;
+       use warnings;
+       use Test::More tests=>5;
+}
+
+{
+    package TypeLib;
+    use MooseX::Types::Structured qw(Dict Tuple);
+    use MooseX::Types::Moose qw(Int Str Item);
+    use MooseX::Types -declare => [qw(
+        MyDict1 MyDict2  MyDict4 
+    )];
+
+    subtype MyDict1,
+    as Dict[name=>Str, age=>Int];
+
+    subtype MyDict2,
+    as Dict[name=>Str, age=>Int];
+
+     subtype MyDict4,
+    as Dict[name=>Str, age=>Item];
+
+}
+
+use Moose::Util::TypeConstraints;
+use MooseX::Types::Structured qw(Dict Tuple);
+use MooseX::Types::Moose qw(Int Str Item Object ArrayRef HashRef);
+
+BEGIN {
+    TypeLib->import(':all');
+}
+
+ok ( MyDict2->is_a_type_of(MyDict4),
+  'MyDict2 is_a_type_of MyDict4');
+
+ok ( (Tuple[Tuple[ class_type('Paper'), class_type('Stone') ], Dict[]])->is_a_type_of( Tuple[Tuple[ Item, Item ], Dict[]] ),
+  "tuple of tuple" );
+
+ok ( (Tuple[Tuple[ class_type('Paper'), class_type('Stone') ], Dict[]])->is_a_type_of( Tuple[Tuple[ Item, Item ], Dict[]] ),
+  "tuple of tuple" );
+
+ok ( (Tuple[Tuple[ class_type('Paper'), class_type('Stone') ], Dict[]])->is_subtype_of( Tuple[Tuple[ Item, Item ], Dict[]] ),
+  "tuple of tuple" );
+
+ok ( MyDict1->is_subtype_of(MyDict4),
+  'MyDict1 is_subtype_of MyDict4');
+