Commit | Line | Data |
a4a88fef |
1 | BEGIN { |
2 | use strict; |
3 | use warnings; |
16aea7bf |
4 | use Test::More tests=>44; |
a4a88fef |
5 | use Test::Exception; |
6 | } |
7 | |
16aea7bf |
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 |
13 | )]; |
14 | |
15 | ## Create some sample Dicts |
16 | |
17 | subtype MyDict1, |
18 | as Dict[name=>Str, age=>Int]; |
19 | |
20 | subtype subMyDict1, |
21 | as MyDict1; |
22 | |
23 | subtype MyDict2, |
24 | as Dict[name=>Str, age=>Int]; |
25 | |
26 | subtype MyDict3, |
27 | as Dict[key=>Int, anotherkey=>Str]; |
28 | |
29 | subtype subMyDict3, |
30 | as MyDict3; |
31 | |
32 | ## Create some sample Tuples |
33 | |
34 | subtype MyTuple1, |
35 | as Tuple[Int,Int,Str]; |
36 | |
37 | subtype MyTuple2, |
38 | as Tuple[Int,Int,Str]; |
39 | |
40 | subtype MyTuple3, |
41 | as Tuple[Object, HashRef]; |
42 | |
43 | subtype subMyTuple3, |
44 | as MyTuple3; |
a4a88fef |
45 | |
46 | ## Test equals |
47 | |
16aea7bf |
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'); |
a4a88fef |
54 | |
16aea7bf |
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'); |
a4a88fef |
61 | |
62 | ## Test is_a_type_of |
63 | |
16aea7bf |
64 | ok ( MyDict1->is_a_type_of(Dict), 'MyDict1 is_a_type_of Dict'); |
65 | ok (!MyDict1->is_a_type_of(Tuple), 'MyDict1 NOT is_a_type_of Tuple'); |
66 | ok ( MyDict1->is_a_type_of(MyDict2), 'MyDict1 is_a_type_of MyDict2'); |
67 | ok ( MyDict2->is_a_type_of(MyDict1), 'MyDict2 is_a_type_of MyDict1'); |
68 | ok (!MyDict1->is_a_type_of(MyDict3), 'MyDict1 NOT is_a_type_of MyDict3'); |
69 | ok (!MyDict2->is_a_type_of(MyDict3), 'MyDict2 NOT is_a_type_of MyDict3'); |
70 | ok ( subMyDict1->is_a_type_of(Dict), 'subMyDict1 type of Dict'); |
71 | ok ( subMyDict1->is_a_type_of(MyDict1), 'subMyDict1 type of MyDict1'); |
72 | ok ( subMyDict1->is_a_type_of(subMyDict1), 'subMyDict1 type of subMyDict1'); |
73 | ok ( subMyDict1->is_a_type_of(MyDict2), 'subMyDict1 type of MyDict2'); |
74 | |
75 | ok ( MyTuple1->is_a_type_of(Tuple), 'MyTuple1 is_a_type_of Tuple'); |
76 | ok (!MyTuple1->is_a_type_of(Dict), 'MyTuple1 NOT is_a_type_of Dict'); |
77 | ok ( MyTuple1->is_a_type_of(MyTuple2), 'MyTuple1 is_a_type_of MyTuple2'); |
78 | ok ( MyTuple2->is_a_type_of(MyTuple1), 'MyTuple2 is_a_type_of MyTuple1'); |
79 | ok (!MyTuple1->is_a_type_of(MyTuple3), 'MyTuple1 NOT is_a_type_of MyTuple3'); |
80 | ok (!MyTuple2->is_a_type_of(MyTuple3), 'MyTuple2 NOT is_a_type_of MyTuple3'); |
81 | |
a4a88fef |
82 | ## is_subtype_of |
83 | |
16aea7bf |
84 | ok ( MyDict1->is_subtype_of(Dict), 'MyDict1 is_subtype_of Dict'); |
85 | ok (!MyDict1->is_subtype_of(Tuple), 'MyDict1 NOT is_subtype_of Tuple'); |
86 | ok (!MyDict1->is_subtype_of(MyDict2), 'MyDict1 is_subtype_of MyDict2'); |
87 | ok (!MyDict2->is_subtype_of(MyDict1), 'MyDict2 is_subtype_of MyDict1'); |
88 | ok (!MyDict1->is_subtype_of(MyDict3), 'MyDict1 NOT is_subtype_of MyDict3'); |
89 | ok (!MyDict2->is_subtype_of(MyDict3), 'MyDict2 NOT is_subtype_of MyDict3'); |
90 | ok ( subMyDict1->is_subtype_of(Dict), 'subMyDict1 is_subtype_of Dict'); |
91 | ok ( subMyDict1->is_subtype_of(MyDict1), 'subMyDict1 is_subtype_of MyDict1'); |
92 | ok (!subMyDict1->is_subtype_of(subMyDict1), 'subMyDict1 is_subtype_of subMyDict1'); |
93 | ok ( subMyDict1->is_subtype_of(MyDict2), 'subMyDict1 is_subtype_of MyDict2'); |
94 | |
95 | ok ( MyTuple1->is_subtype_of(Tuple), 'MyTuple1 is_subtype_of Tuple'); |
96 | ok (!MyTuple1->is_subtype_of(Dict), 'MyTuple1 NOT is_subtype_of Dict'); |
97 | ok (!MyTuple1->is_subtype_of(MyTuple2), 'MyTuple1 is_subtype_of MyTuple2'); |
98 | ok (!MyTuple2->is_subtype_of(MyTuple1), 'MyTuple2 is_subtype_of MyTuple1'); |
99 | ok (!MyTuple1->is_subtype_of(MyTuple3), 'MyTuple1 NOT is_subtype_of MyTuple3'); |
100 | ok (!MyTuple2->is_subtype_of(MyTuple3), 'MyTuple2 NOT is_subtype_of MyTuple3'); |
a4a88fef |
101 | |