Commit | Line | Data |
a4a88fef |
1 | BEGIN { |
2 | use strict; |
3 | use warnings; |
fe1fd33c |
4 | use Test::More tests=>56; |
a4a88fef |
5 | } |
6 | |
16aea7bf |
7 | use MooseX::Types::Structured qw(Dict Tuple); |
8 | use MooseX::Types::Moose qw(Int Str Object ArrayRef HashRef); |
9 | use MooseX::Types -declare => [qw( |
10 | MyDict1 MyDict2 MyDict3 subMyDict3 subMyDict1 |
11 | MyTuple1 MyTuple2 MyTuple3 subMyTuple3 |
12 | )]; |
13 | |
14 | ## Create some sample Dicts |
15 | |
16 | subtype MyDict1, |
17 | as Dict[name=>Str, age=>Int]; |
18 | |
19 | subtype subMyDict1, |
20 | as MyDict1; |
21 | |
22 | subtype MyDict2, |
23 | as Dict[name=>Str, age=>Int]; |
24 | |
25 | subtype MyDict3, |
26 | as Dict[key=>Int, anotherkey=>Str]; |
27 | |
28 | subtype subMyDict3, |
29 | as MyDict3; |
30 | |
31 | ## Create some sample Tuples |
32 | |
33 | subtype MyTuple1, |
34 | as Tuple[Int,Int,Str]; |
35 | |
36 | subtype MyTuple2, |
37 | as Tuple[Int,Int,Str]; |
38 | |
39 | subtype MyTuple3, |
40 | as Tuple[Object, HashRef]; |
41 | |
42 | subtype subMyTuple3, |
43 | as MyTuple3; |
a4a88fef |
44 | |
45 | ## Test equals |
46 | |
16aea7bf |
47 | ok ( MyDict1->equals(MyDict2), 'MyDict1 == MyDict2'); |
48 | ok ( MyDict2->equals(MyDict1), 'MyDict2 == MyDict1'); |
49 | ok (!MyDict1->equals(MyDict3), 'MyDict1 == MyDict3'); |
50 | ok (!MyDict2->equals(MyDict3), 'MyDict2 == MyDict3'); |
51 | ok (!MyDict3->equals(MyDict2), 'MyDict3 == MyDict2'); |
52 | ok (!MyDict3->equals(MyDict1), 'MyDict3 == MyDict1'); |
a4a88fef |
53 | |
16aea7bf |
54 | ok ( MyTuple1->equals(MyTuple2), 'MyTuple1 == MyTuple2'); |
55 | ok ( MyTuple2->equals(MyTuple1), 'MyTuple2 == MyTuple1'); |
56 | ok (!MyTuple1->equals(MyTuple3), 'MyTuple1 == MyTuple3'); |
57 | ok (!MyTuple2->equals(MyTuple3), 'MyTuple2 == MyTuple3'); |
58 | ok (!MyTuple3->equals(MyTuple2), 'MyTuple3 == MyTuple2'); |
59 | ok (!MyTuple3->equals(MyTuple1), 'MyTuple3 == MyTuple1'); |
a4a88fef |
60 | |
fe1fd33c |
61 | ok ( MyDict1->equals(MyDict2), 'MyDict1 == MyDict2'); |
62 | ok ( MyDict2->equals(MyDict1), 'MyDict2 == MyDict1'); |
63 | ok (!MyDict1->equals(MyDict3), 'MyDict1 == MyDict3'); |
64 | ok (!MyDict2->equals(MyDict3), 'MyDict2 == MyDict3'); |
65 | ok (!MyDict3->equals(MyDict2), 'MyDict3 == MyDict2'); |
66 | ok (!MyDict3->equals(MyDict1), 'MyDict3 == MyDict1'); |
67 | |
68 | ok ( MyTuple1->equals(MyTuple2), 'MyTuple1 == MyTuple2'); |
69 | ok ( MyTuple2->equals(MyTuple1), 'MyTuple2 == MyTuple1'); |
70 | ok (!MyTuple1->equals(MyTuple3), 'MyTuple1 == MyTuple3'); |
71 | ok (!MyTuple2->equals(MyTuple3), 'MyTuple2 == MyTuple3'); |
72 | ok (!MyTuple3->equals(MyTuple2), 'MyTuple3 == MyTuple2'); |
73 | ok (!MyTuple3->equals(MyTuple1), 'MyTuple3 == MyTuple1'); |
af1d00c9 |
74 | |
a4a88fef |
75 | ## Test is_a_type_of |
76 | |
16aea7bf |
77 | ok ( MyDict1->is_a_type_of(Dict), 'MyDict1 is_a_type_of Dict'); |
78 | ok (!MyDict1->is_a_type_of(Tuple), 'MyDict1 NOT is_a_type_of Tuple'); |
79 | ok ( MyDict1->is_a_type_of(MyDict2), 'MyDict1 is_a_type_of MyDict2'); |
80 | ok ( MyDict2->is_a_type_of(MyDict1), 'MyDict2 is_a_type_of MyDict1'); |
81 | ok (!MyDict1->is_a_type_of(MyDict3), 'MyDict1 NOT is_a_type_of MyDict3'); |
82 | ok (!MyDict2->is_a_type_of(MyDict3), 'MyDict2 NOT is_a_type_of MyDict3'); |
83 | ok ( subMyDict1->is_a_type_of(Dict), 'subMyDict1 type of Dict'); |
84 | ok ( subMyDict1->is_a_type_of(MyDict1), 'subMyDict1 type of MyDict1'); |
85 | ok ( subMyDict1->is_a_type_of(subMyDict1), 'subMyDict1 type of subMyDict1'); |
86 | ok ( subMyDict1->is_a_type_of(MyDict2), 'subMyDict1 type of MyDict2'); |
87 | |
88 | ok ( MyTuple1->is_a_type_of(Tuple), 'MyTuple1 is_a_type_of Tuple'); |
89 | ok (!MyTuple1->is_a_type_of(Dict), 'MyTuple1 NOT is_a_type_of Dict'); |
90 | ok ( MyTuple1->is_a_type_of(MyTuple2), 'MyTuple1 is_a_type_of MyTuple2'); |
91 | ok ( MyTuple2->is_a_type_of(MyTuple1), 'MyTuple2 is_a_type_of MyTuple1'); |
92 | ok (!MyTuple1->is_a_type_of(MyTuple3), 'MyTuple1 NOT is_a_type_of MyTuple3'); |
93 | ok (!MyTuple2->is_a_type_of(MyTuple3), 'MyTuple2 NOT is_a_type_of MyTuple3'); |
94 | |
a4a88fef |
95 | ## is_subtype_of |
96 | |
16aea7bf |
97 | ok ( MyDict1->is_subtype_of(Dict), 'MyDict1 is_subtype_of Dict'); |
98 | ok (!MyDict1->is_subtype_of(Tuple), 'MyDict1 NOT is_subtype_of Tuple'); |
99 | ok (!MyDict1->is_subtype_of(MyDict2), 'MyDict1 is_subtype_of MyDict2'); |
100 | ok (!MyDict2->is_subtype_of(MyDict1), 'MyDict2 is_subtype_of MyDict1'); |
101 | ok (!MyDict1->is_subtype_of(MyDict3), 'MyDict1 NOT is_subtype_of MyDict3'); |
102 | ok (!MyDict2->is_subtype_of(MyDict3), 'MyDict2 NOT is_subtype_of MyDict3'); |
103 | ok ( subMyDict1->is_subtype_of(Dict), 'subMyDict1 is_subtype_of Dict'); |
104 | ok ( subMyDict1->is_subtype_of(MyDict1), 'subMyDict1 is_subtype_of MyDict1'); |
105 | ok (!subMyDict1->is_subtype_of(subMyDict1), 'subMyDict1 is_subtype_of subMyDict1'); |
106 | ok ( subMyDict1->is_subtype_of(MyDict2), 'subMyDict1 is_subtype_of MyDict2'); |
107 | |
108 | ok ( MyTuple1->is_subtype_of(Tuple), 'MyTuple1 is_subtype_of Tuple'); |
109 | ok (!MyTuple1->is_subtype_of(Dict), 'MyTuple1 NOT is_subtype_of Dict'); |
110 | ok (!MyTuple1->is_subtype_of(MyTuple2), 'MyTuple1 is_subtype_of MyTuple2'); |
111 | ok (!MyTuple2->is_subtype_of(MyTuple1), 'MyTuple2 is_subtype_of MyTuple1'); |
112 | ok (!MyTuple1->is_subtype_of(MyTuple3), 'MyTuple1 NOT is_subtype_of MyTuple3'); |
113 | ok (!MyTuple2->is_subtype_of(MyTuple3), 'MyTuple2 NOT is_subtype_of MyTuple3'); |
a4a88fef |
114 | |