More failing tests for Tuple.
[gitmo/MooseX-Types-Structured.git] / t / bug-optional.t
CommitLineData
ff0781f2 1use strict;
2use warnings;
3use Test::More;
4
5BEGIN {
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
d5c6cdc8 12 MyTuple
ff0781f2 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];
d5c6cdc8 18
19 subtype MyTuple, as Tuple[Object, Any, Optional[Any]];
ff0781f2 20}
21
22BEGIN {
23 MyTypes->import(':all');
24}
25
26ok(!Signature->check([ [bless {}, 'Foo'], {} ]));
27
28ok(!MyDict->check({ }));
29ok(!MyDict->check({ optional => 42 }));
30ok(!MyDict->check({ optional => 42, unknown => 23 }));
31ok(!MyDict->check({ required => 42, unknown => 23 }));
32
33ok(MyDict->check({ optional => 42, required => 23 }));
34ok(MyDict->check({ required => 23 }));
35
d5c6cdc8 36ok(!MyTuple->check([]));
37ok(!MyTuple->check([bless({}, 'Foo')]));
38ok(!MyTuple->check([bless({}, 'Foo'), 'bar', 'baz', 'moo']));
39
40ok(MyTuple->check([bless({}, 'Foo'), 'bar']));
41ok(MyTuple->check([bless({}, 'Foo'), 'bar', 'baz']));
42
ff0781f2 43done_testing;