stub for api test, example and warnings about extending subtypes, fixes to the makefi...
[gitmo/MooseX-Types-Structured.git] / t / 06-api.t
1 BEGIN {
2         use strict;
3         use warnings;
4         use Test::More tests=>12;
5         use Test::Exception;
6 }
7
8 {
9         ## Tests for the Moose::Meta::TypeConstraints API stuff (equals, etc)
10     package Test::MooseX::Meta::TypeConstraint::Structured::API;
11
12     use Moose;
13     use MooseX::Types::Structured qw(Dict Tuple);
14         use MooseX::Types::Moose qw(Int Str Object ArrayRef HashRef);
15         use MooseX::Types -declare => [qw(
16         MyDict1 MyDict2 MyDict3 subMyDict3
17                 MyTuple1 MyTuple2 MyTuple3 subMyTuple3
18     )];
19     
20         ## Create some sample Dicts
21         
22     my $MyDict1 = subtype MyDict1,
23      as Dict[name=>Str, age=>Int];
24         
25     my $MyDict2 = subtype MyDict2,
26      as Dict[name=>Str, age=>Int];
27          
28     my $MyDict3 = subtype MyDict3,
29      as Dict[key=>Int, anotherkey=>Str];
30          
31         my $subMyDict3 = subtype subMyDict3,
32          as MyDict3;
33
34         ## Create some sample Tuples
35         
36         my $MyTuple1 = subtype MyTuple1,
37          as Tuple[Int,Int,Str];
38
39         my $MyTuple2 = subtype MyTuple2,
40          as Tuple[Int,Int,Str];
41          
42         my $MyTuple3 = subtype MyTuple3,
43          as Tuple[Object, HashRef];
44
45         my $subMyTuple3 = subtype subMyTuple3,
46          as MyTuple3;
47 }
48
49 ## Test equals
50
51 ok $MyDict1->equals($MyDict2), '$MyDict1 == $MyDict2';
52 ok $MyDict2->equals($MyDict1), '$MyDict2 == $MyDict1';
53 ok ! $MyDict1->equals($MyDict3), '$MyDict1 == $MyDict3';
54 ok ! $MyDict2->equals($MyDict3), '$MyDict2 == $MyDict3';
55 ok ! $MyDict3->equals($MyDict2), '$MyDict3 == $MyDict2';
56 ok ! $MyDict3->equals($MyDict1), '$MyDict3 == $MyDict1';
57
58 ok $MyTuple1->equals($MyTuple2), '$MyTuple1 == $MyTuple2';
59 ok $MyTuple2->equals($MyTuple1), '$MyTuple2 == $MyTuple1';
60 ok ! $MyTuple1->equals($MyTuple3), '$MyTuple1 == $MyTuple3';
61 ok ! $MyTuple2->equals($MyTuple3), '$MyTuple2 == $MyTuple3';
62 ok ! $MyTuple3->equals($MyTuple2), '$MyTuple3 == $MyTuple2';
63 ok ! $MyTuple3->equals($MyTuple1), '$MyTuple3 == $MyTuple1';
64
65 ## Test is_a_type_of
66
67 ## is_subtype_of
68
69