File: bug-optional.t

package info (click to toggle)
libmoosex-types-structured-perl 0.36-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 492 kB
  • sloc: perl: 757; makefile: 11
file content (43 lines) | stat: -rw-r--r-- 1,114 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use strict;
use warnings;
use Test::More 0.88;

{
    package MyTypes;
    use MooseX::Types::Structured qw(Dict Tuple Optional);
    use MooseX::Types::Moose qw(Object Any);
    use MooseX::Types -declare => [qw(
        Signature
        MyDict
        MyTuple
    )];

    subtype Signature, as Tuple[Tuple[Object], Dict[optional => Optional[Any], required => Any]];

    subtype MyDict, as Dict[optional => Optional[Any], required => Any];

    subtype MyTuple, as Tuple[Object, Any, Optional[Any]];
}

BEGIN {
    MyTypes->import(':all');
}

ok(!Signature->check([ [bless {}, 'Foo'], {} ]));

ok(!MyDict->check({ }));
ok(!MyDict->check({ optional => 42 }));
ok(!MyDict->check({ optional => 42, unknown => 23 }));
ok(!MyDict->check({ required => 42, unknown => 23 }));

ok(MyDict->check({ optional => 42, required => 23 }));
ok(MyDict->check({ required => 23 }));

ok(!MyTuple->check([]));
ok(!MyTuple->check([bless({}, 'Foo')]));
ok(!MyTuple->check([bless({}, 'Foo'), 'bar', 'baz', 'moo']));

ok(MyTuple->check([bless({}, 'Foo'), 'bar']));
ok(MyTuple->check([bless({}, 'Foo'), 'bar', 'baz']));

done_testing;