summaryrefslogtreecommitdiffstats
path: root/t/fun/recursion.t
diff options
context:
space:
mode:
Diffstat (limited to 't/fun/recursion.t')
-rw-r--r--t/fun/recursion.t37
1 files changed, 37 insertions, 0 deletions
diff --git a/t/fun/recursion.t b/t/fun/recursion.t
new file mode 100644
index 0000000..75663ec
--- /dev/null
+++ b/t/fun/recursion.t
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+use lib 't/fun/lib';
+
+BEGIN {
+ if (!eval { require 5.016; 1 }) {
+ plan skip_all => "This test requires 5.16";
+ }
+}
+
+use 5.016;
+
+use Fun;
+
+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;