4 use Test::More tests=>44;
8 use MooseX::Types::Structured qw(Dict Tuple);
9 use MooseX::Types::Moose qw(Int Str Object ArrayRef HashRef);
10 use MooseX::Types -declare => [qw(
11 MyDict1 MyDict2 MyDict3 subMyDict3 subMyDict1
12 MyTuple1 MyTuple2 MyTuple3 subMyTuple3
15 ## Create some sample Dicts
18 as Dict[name=>Str, age=>Int];
24 as Dict[name=>Str, age=>Int];
27 as Dict[key=>Int, anotherkey=>Str];
32 ## Create some sample Tuples
35 as Tuple[Int,Int,Str];
38 as Tuple[Int,Int,Str];
41 as Tuple[Object, HashRef];
48 ok ( MyDict1->equals(MyDict2), 'MyDict1 == MyDict2');
49 ok ( MyDict2->equals(MyDict1), 'MyDict2 == MyDict1');
50 ok (!MyDict1->equals(MyDict3), 'MyDict1 == MyDict3');
51 ok (!MyDict2->equals(MyDict3), 'MyDict2 == MyDict3');
52 ok (!MyDict3->equals(MyDict2), 'MyDict3 == MyDict2');
53 ok (!MyDict3->equals(MyDict1), 'MyDict3 == MyDict1');
55 ok ( MyTuple1->equals(MyTuple2), 'MyTuple1 == MyTuple2');
56 ok ( MyTuple2->equals(MyTuple1), 'MyTuple2 == MyTuple1');
57 ok (!MyTuple1->equals(MyTuple3), 'MyTuple1 == MyTuple3');
58 ok (!MyTuple2->equals(MyTuple3), 'MyTuple2 == MyTuple3');
59 ok (!MyTuple3->equals(MyTuple2), 'MyTuple3 == MyTuple2');
60 ok (!MyTuple3->equals(MyTuple1), 'MyTuple3 == MyTuple1');
62 ok ( MyDict1->equals(MyDict2), '$MyDict1 == $MyDict2');
63 ok ( $MyDict2->equals($MyDict1), '$MyDict2 == $MyDict1');
64 ok (!$MyDict1->equals($MyDict3), '$MyDict1 == $MyDict3');
65 ok (!$MyDict2->equals($MyDict3), '$MyDict2 == $MyDict3');
66 ok (!$MyDict3->equals($MyDict2), '$MyDict3 == $MyDict2');
67 ok (!$MyDict3->equals($MyDict1), '$MyDict3 == $MyDict1');
69 ok ( $MyTuple1->equals($MyTuple2), '$MyTuple1 == $MyTuple2');
70 ok ( $MyTuple2->equals($MyTuple1), '$MyTuple2 == $MyTuple1');
71 ok (!$MyTuple1->equals($MyTuple3), '$MyTuple1 == $MyTuple3');
72 ok (!$MyTuple2->equals($MyTuple3), '$MyTuple2 == $MyTuple3');
73 ok (!$MyTuple3->equals($MyTuple2), '$MyTuple3 == $MyTuple2');
74 ok (!$MyTuple3->equals($MyTuple1), '$MyTuple3 == $MyTuple1');
78 ok ( MyDict1->is_a_type_of(Dict), 'MyDict1 is_a_type_of Dict');
79 ok (!MyDict1->is_a_type_of(Tuple), 'MyDict1 NOT is_a_type_of Tuple');
80 ok ( MyDict1->is_a_type_of(MyDict2), 'MyDict1 is_a_type_of MyDict2');
81 ok ( MyDict2->is_a_type_of(MyDict1), 'MyDict2 is_a_type_of MyDict1');
82 ok (!MyDict1->is_a_type_of(MyDict3), 'MyDict1 NOT is_a_type_of MyDict3');
83 ok (!MyDict2->is_a_type_of(MyDict3), 'MyDict2 NOT is_a_type_of MyDict3');
84 ok ( subMyDict1->is_a_type_of(Dict), 'subMyDict1 type of Dict');
85 ok ( subMyDict1->is_a_type_of(MyDict1), 'subMyDict1 type of MyDict1');
86 ok ( subMyDict1->is_a_type_of(subMyDict1), 'subMyDict1 type of subMyDict1');
87 ok ( subMyDict1->is_a_type_of(MyDict2), 'subMyDict1 type of MyDict2');
89 ok ( MyTuple1->is_a_type_of(Tuple), 'MyTuple1 is_a_type_of Tuple');
90 ok (!MyTuple1->is_a_type_of(Dict), 'MyTuple1 NOT is_a_type_of Dict');
91 ok ( MyTuple1->is_a_type_of(MyTuple2), 'MyTuple1 is_a_type_of MyTuple2');
92 ok ( MyTuple2->is_a_type_of(MyTuple1), 'MyTuple2 is_a_type_of MyTuple1');
93 ok (!MyTuple1->is_a_type_of(MyTuple3), 'MyTuple1 NOT is_a_type_of MyTuple3');
94 ok (!MyTuple2->is_a_type_of(MyTuple3), 'MyTuple2 NOT is_a_type_of MyTuple3');
98 ok ( MyDict1->is_subtype_of(Dict), 'MyDict1 is_subtype_of Dict');
99 ok (!MyDict1->is_subtype_of(Tuple), 'MyDict1 NOT is_subtype_of Tuple');
100 ok (!MyDict1->is_subtype_of(MyDict2), 'MyDict1 is_subtype_of MyDict2');
101 ok (!MyDict2->is_subtype_of(MyDict1), 'MyDict2 is_subtype_of MyDict1');
102 ok (!MyDict1->is_subtype_of(MyDict3), 'MyDict1 NOT is_subtype_of MyDict3');
103 ok (!MyDict2->is_subtype_of(MyDict3), 'MyDict2 NOT is_subtype_of MyDict3');
104 ok ( subMyDict1->is_subtype_of(Dict), 'subMyDict1 is_subtype_of Dict');
105 ok ( subMyDict1->is_subtype_of(MyDict1), 'subMyDict1 is_subtype_of MyDict1');
106 ok (!subMyDict1->is_subtype_of(subMyDict1), 'subMyDict1 is_subtype_of subMyDict1');
107 ok ( subMyDict1->is_subtype_of(MyDict2), 'subMyDict1 is_subtype_of MyDict2');
109 ok ( MyTuple1->is_subtype_of(Tuple), 'MyTuple1 is_subtype_of Tuple');
110 ok (!MyTuple1->is_subtype_of(Dict), 'MyTuple1 NOT is_subtype_of Dict');
111 ok (!MyTuple1->is_subtype_of(MyTuple2), 'MyTuple1 is_subtype_of MyTuple2');
112 ok (!MyTuple2->is_subtype_of(MyTuple1), 'MyTuple2 is_subtype_of MyTuple1');
113 ok (!MyTuple1->is_subtype_of(MyTuple3), 'MyTuple1 NOT is_subtype_of MyTuple3');
114 ok (!MyTuple2->is_subtype_of(MyTuple3), 'MyTuple2 NOT is_subtype_of MyTuple3');