Commit | Line | Data |
2f7785a3 |
1 | ## Test case donated by Stevan Little |
07a8693b |
2 | |
3 | BEGIN { |
4 | package Interpreter; |
5 | use Moose; |
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( |
10 | Var |
11 | Const |
12 | Op |
13 | Expr |
14 | )]; |
15 | |
16 | subtype Var() => as Str(); |
17 | |
18 | subtype Const() => as Int() | Str(); |
19 | |
20 | enum Op() => qw[ + - ^ ]; |
21 | |
22 | subtype Expr() => as |
23 | Const() |
24 | | Tuple([Expr(), Op(), Expr()]) # binop |
25 | | Var(); |
26 | } |
27 | |
28 | { |
29 | package Foo; |
30 | BEGIN { Interpreter->import(':all') }; |
31 | use Test::More 'no_plan'; |
32 | |
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}; |
36 | |
37 | ok is_Op('+'), q{passes is_Op('+')}; |
38 | ok is_Op('-'), q{passes is_Op('-')}; |
39 | ok is_Op('^'), q{passes is_Op('^')}; |
40 | |
41 | use Data::Dump qw/dump/; |
42 | #die dump Expr(); |
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 ]])}; |
46 | } |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |