301de29852583ee5944d0fb83161b94ff97dde0c
[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     )];
13
14     subtype Signature, as Tuple[Tuple[Object], Dict[optional => Optional[Any], required => Any]];
15
16     subtype MyDict, as Dict[optional => Optional[Any], required => Any];
17 }
18
19 BEGIN {
20     MyTypes->import(':all');
21 }
22
23 ok(!Signature->check([ [bless {}, 'Foo'], {} ]));
24
25 ok(!MyDict->check({ }));
26 ok(!MyDict->check({ optional => 42 }));
27 ok(!MyDict->check({ optional => 42, unknown => 23 }));
28 ok(!MyDict->check({ required => 42, unknown => 23 }));
29
30 ok(MyDict->check({ optional => 42, required => 23 }));
31 ok(MyDict->check({ required => 23 }));
32
33 done_testing;