Commit | Line | Data |
5bd9a68e |
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 | |