autocurry tests autocurrying
Lukas Mai [Tue, 2 Aug 2011 02:29:29 +0000 (04:29 +0200)]
t/autocurry.t [new file with mode: 0644]

diff --git a/t/autocurry.t b/t/autocurry.t
new file mode 100644 (file)
index 0000000..2a28cf2
--- /dev/null
@@ -0,0 +1,32 @@
+use strict;
+use warnings;
+use Test::More;
+
+use Function::Parameters;
+
+fun const($x)() { $x }
+
+fun whatev($x)($y1, $y2)($z) { $x + $y1 * $y2 - $z }
+
+fun cprod(@x)(@y) {
+       my @r;
+       for my $x (@x) {
+               for my $y (@y) {
+                       push @r, [$x, $y];
+               }
+       }
+       @r
+}
+
+is const(42)->(0), 42;
+is_deeply [cprod('A', 'B')->(1, 2, 3)], [['A', 1], ['A', 2], ['A', 3], ['B', 1], ['B', 2], ['B', 3]];
+is whatev(100)->(6, 7)(5), 137;
+
+my $add = fun ($x)($y) { $x + $y };
+my $succ = $add->(1);
+
+is $succ->(1), 2;
+is $succ->(9), 10;
+is $succ->(2), 3;
+
+done_testing;