The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
%TestML 1.0
# %DumpAst 1

Plan = 21;

Label = 'Fruity Tests';

{
    Label = 'Anonymous function never called';
    True == False;
};

test1 = (f, c, t) {
    List(f, '->', c).Join == t;
    t.Strip(f).Strip('->') == c;
    t.Strip('->') == List(f, c).Join;
};

test1.Type == 'Func';

Label = '$BlockLabel';

test1(*fruit, *color, *thing);

test2 = {
    thing ~~ color;
};
 
test2(*color, *thing);

test3 = (a, b, c) {
    f1(a) == b;
    f2(a) == c;
};

test3(*input, *output1, *output2);

Label = 'Passing functions as objects';

test4 = (func, num) {
    func.Type == 'Func';
    func(num);
};

test5 = (num) {
    num == 42;
};

test4(test5, 42);

=== Red Apple
--- fruit: apple
--- color: red
--- thing: apple->red

=== Orange Orange
--- fruit: orange
--- color: orange
--- thing: orange->orange

=== Green Grape
--- fruit: grape
--- color: green
--- thing: grape->green


=== One
--- input: 1
--- output1: 43
--- output2: 2

=== Two
--- input: 2
--- output1: 86
--- output2: 6

=== Three
--- input: 5
--- output1: 215
--- output2: 30