7 use MooseX::Types::Structured qw(Dict Tuple Optional);
8 use MooseX::Types::Moose qw(Object Any);
9 use MooseX::Types -declare => [qw(
15 subtype Signature, as Tuple[Tuple[Object], Dict[optional => Optional[Any], required => Any]];
17 subtype MyDict, as Dict[optional => Optional[Any], required => Any];
19 subtype MyTuple, as Tuple[Object, Any, Optional[Any]];
23 MyTypes->import(':all');
26 ok(!Signature->check([ [bless {}, 'Foo'], {} ]));
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 }));
33 ok(MyDict->check({ optional => 42, required => 23 }));
34 ok(MyDict->check({ required => 23 }));
36 ok(!MyTuple->check([]));
37 ok(!MyTuple->check([bless({}, 'Foo')]));
38 ok(!MyTuple->check([bless({}, 'Foo'), 'bar', 'baz', 'moo']));
40 ok(MyTuple->check([bless({}, 'Foo'), 'bar']));
41 ok(MyTuple->check([bless({}, 'Foo'), 'bar', 'baz']));