import all tests from Fun
[p5sagit/Function-Parameters.git] / t / foreign / Fun / recursion.t
diff --git a/t/foreign/Fun/recursion.t b/t/foreign/Fun/recursion.t
new file mode 100644 (file)
index 0000000..7ebcdce
--- /dev/null
@@ -0,0 +1,36 @@
+#!perl
+use strict;
+use warnings FATAL => 'all';
+use Test::More;
+
+BEGIN {
+    if (!eval { require 5.016; 1 }) {
+        plan skip_all => "This test requires 5.16";
+    }
+}
+
+use 5.016;
+
+use Function::Parameters;
+
+fun fact ($n) {
+    if ($n < 2) {
+        return 1;
+    }
+    return $n * __SUB__->($n - 1);
+}
+
+is(fact(5), 120);
+
+is(fun ($n = 8) { $n < 2 ? 1 : $n * __SUB__->($n - 1) }->(), 40320);
+
+fun fact2 ($n) {
+    if ($n < 2) {
+        return 1;
+    }
+    return $n * fact2($n - 1);
+}
+
+is(fact2(5), 120);
+
+done_testing;