From 6d034593a5f0b02eb9e5b7069fa86814aae07b7c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 18 Aug 2012 18:34:54 -0500 Subject: initial implementation --- t/basic.t | 32 ++++++++++++++++++++++++++++++++ t/compile-time.t | 14 ++++++++++++++ t/recursion.t | 25 +++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 t/basic.t create mode 100644 t/compile-time.t create mode 100644 t/recursion.t (limited to 't') diff --git a/t/basic.t b/t/basic.t new file mode 100644 index 0000000..080c2cf --- /dev/null +++ b/t/basic.t @@ -0,0 +1,32 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Fun; + +fun mul ($x, $y) { + return $x * $y; +} + +is(mul(3, 4), 12); + +fun sum (@nums) { + my $sum; + for my $num (@nums) { + $sum += $num; + } + return $sum; +} + +is(sum(1, 2, 3, 4), 10); + +{ + package Foo; + use Fun; + fun foo { } +} + +ok(exists $Foo::{foo}); + +done_testing; diff --git a/t/compile-time.t b/t/compile-time.t new file mode 100644 index 0000000..a20ff6c --- /dev/null +++ b/t/compile-time.t @@ -0,0 +1,14 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Fun; + +TODO: { todo_skip "doesn't work at compile time yet", 1; +is(foo(), "FOO"); +} + +fun foo { "FOO" } + +done_testing; diff --git a/t/recursion.t b/t/recursion.t new file mode 100644 index 0000000..0b13da9 --- /dev/null +++ b/t/recursion.t @@ -0,0 +1,25 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +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); + +done_testing; -- cgit v1.2.3-54-g00ecf