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