[t/spec] Add tricky tests (which pass after latest Rakudo patch), unfudge old simple...
[pugs.git] / t / unspecced / yaml-eval.t
blobf926b8453f59b44675541181721734dba2451de5
1 use Test;
2  
3 plan 5;
4  
5 my $yaml_tests = eval(q{
6
7     m2: %h
8     call: "{a => 'b'}"
9     expect: 2
11     m1: %h
12     m2: @a?
13     call: "[1,2,3]"
14     expect: 2
16     m1: @a?
17     expect: 2 
19     m1: %h
20     m2: @a
21     call: "[1,2,3]"
22     expect: 2
23 -   
24     m1: 
25     m2: @a?
26     call: "[1,2,3]"
27     expect: 2
29 }, :lang<yaml>);
31 for each($yaml_tests) -> %h {
32     # I think Perl6 is supposed to offer us a way to just
33     # pass %h on through...
34     test_dispatch( 
35         m1     => %h<m1>,
36         m2     => %h<m2>,
37         call   => %h<call>,
38         expect => %h<expect>,
39      );
42 sub test_dispatch (
43     Str $m1,  
44     Str $m2,
45     Str $call,
46     Int $expect,
47     ) {
49     state $cls = 'Foo000';
50     $cls++;
52     my $got = eval qq/
53         class $cls \{
54             multi method a ($m1) \{1\}
55             multi method a ($m2) \{2\}
56         \};
57         {$cls}.a($call);
58     /;
60     if defined $got {
61         is($got , $expect, "Arguments ($call) to signatures 1. ($m1) and 2. ($m2) calls $expect");
62     }
63     else {
64         ok(0, "Failed to compile test! error was was: $!" )
65     }