More failing tests for Tuple.
[gitmo/MooseX-Types-Structured.git] / t / bug-optional.t
1 use strict;
2 use warnings;
3 use Test::More;
4
5 BEGIN {
6     package MyTypes;
7     use MooseX::Types::Structured qw(Dict Tuple Optional);
8     use MooseX::Types::Moose qw(Object Any);
9     use MooseX::Types -declare => [qw(
10         Signature
11         MyDict
12         MyTuple
13     )];
14
15     subtype Signature, as Tuple[Tuple[Object], Dict[optional => Optional[Any], required => Any]];
16
17     subtype MyDict, as Dict[optional => Optional[Any], required => Any];
18
19     subtype MyTuple, as Tuple[Object, Any, Optional[Any]];
20 }
21
22 BEGIN {
23     MyTypes->import(':all');
24 }
25
26 ok(!Signature->check([ [bless {}, 'Foo'], {} ]));
27
28 ok(!MyDict->check({ }));
29 ok(!MyDict->check({ optional => 42 }));
30 ok(!MyDict->check({ optional => 42, unknown => 23 }));
31 ok(!MyDict->check({ required => 42, unknown => 23 }));
32
33 ok(MyDict->check({ optional => 42, required => 23 }));
34 ok(MyDict->check({ required => 23 }));
35
36 ok(!MyTuple->check([]));
37 ok(!MyTuple->check([bless({}, 'Foo')]));
38 ok(!MyTuple->check([bless({}, 'Foo'), 'bar', 'baz', 'moo']));
39
40 ok(MyTuple->check([bless({}, 'Foo'), 'bar']));
41 ok(MyTuple->check([bless({}, 'Foo'), 'bar', 'baz']));
42
43 done_testing;