ec6edec3d0ea25d1d27ffba8cd56e69d8d7bf46a
[gitmo/MooseX-Types-Structured.git] / t / regressions / 01-is_type_of.t
1 BEGIN {
2         use strict;
3         use warnings;
4         use Test::More tests=>5;
5 }
6
7 {
8     package TypeLib;
9     use MooseX::Types::Structured qw(Dict Tuple);
10     use MooseX::Types::Moose qw(Int Str Item);
11     use MooseX::Types -declare => [qw(
12         MyDict1 MyDict2  MyDict4 
13     )];
14
15     subtype MyDict1,
16     as Dict[name=>Str, age=>Int];
17
18     subtype MyDict2,
19     as Dict[name=>Str, age=>Int];
20
21      subtype MyDict4,
22     as Dict[name=>Str, age=>Item];
23
24 }
25
26 use Moose::Util::TypeConstraints;
27 use MooseX::Types::Structured qw(Dict Tuple);
28 use MooseX::Types::Moose qw(Int Str Item Object ArrayRef HashRef);
29
30 BEGIN {
31     TypeLib->import(':all');
32 }
33
34 ok ( MyDict2->is_a_type_of(MyDict4),
35   'MyDict2 is_a_type_of MyDict4');
36
37 ok ( (Tuple[Tuple[ class_type('Paper'), class_type('Stone') ], Dict[]])->is_a_type_of( Tuple[Tuple[ Item, Item ], Dict[]] ),
38   "tuple of tuple" );
39
40 ok ( (Tuple[Tuple[ class_type('Paper'), class_type('Stone') ], Dict[]])->is_a_type_of( Tuple[Tuple[ Item, Item ], Dict[]] ),
41   "tuple of tuple" );
42
43 ok ( (Tuple[Tuple[ class_type('Paper'), class_type('Stone') ], Dict[]])->is_subtype_of( Tuple[Tuple[ Item, Item ], Dict[]] ),
44   "tuple of tuple" );
45
46 ok ( MyDict1->is_subtype_of(MyDict4),
47   'MyDict1 is_subtype_of MyDict4');
48