1 ## Test case donated by Stevan Little
6 use Moose::Util::TypeConstraints;
7 use MooseX::Types::Structured qw(Dict Tuple);
8 use MooseX::Types::Moose qw(Int Str);
9 use MooseX::Types -declare => [qw(
16 subtype Var() => as Str();
18 subtype Const() => as Int() | Str();
20 enum Op() => qw[ + - ^ ];
24 | Tuple([Expr(), Op(), Expr()]) # binop
30 BEGIN { Interpreter->import(':all') };
31 use Test::More 'no_plan';
33 ok is_Var('x'), q{passes is_Var('x')};
34 ok is_Const(1), q{passes is_Const(1)};
35 ok is_Const('Hello World'), q{passes is_Const};
37 ok is_Op('+'), q{passes is_Op('+')};
38 ok is_Op('-'), q{passes is_Op('-')};
39 ok is_Op('^'), q{passes is_Op('^')};
41 use Data::Dump qw/dump/;
43 ok Expr->check([ 11, '+', 12]), '';
44 ok is_Expr([ 1, '+', 1]), q{passes is_Expr([ 1, '+', 1])};
45 ok is_Expr([ 1, '+', [ 1, '+', 1 ]]), q{passes is_Expr([ 1, '+', [ 1, '+', 1 ]])};