ignore vim swap files
[p5sagit/Function-Parameters.git] / t / 02-compiles.t
1 #!perl
2
3 use Test::More tests => 10;
4
5 use warnings FATAL => 'all';
6 use strict;
7
8 use Function::Parameters;
9
10 method id_1() { $self }
11
12 method id_2
13  (
14
15  )
16  : #hello
17  (
18   $
19  )
20  {@_ == 0 or return;
21          $self
22  }
23
24 method##
25     id_3 ##
26  (   ##
27          #
28  ) ##AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
29  { ##
30         $self ##
31  } ##
32
33 method add($y) {
34         $self + $y
35 }
36
37 method mymap(@args) :(&@) {
38   my @res;
39   for (@args) {
40     push @res, $self->($_);
41   }
42   @res
43 }
44
45 method fac_1() {
46         $self < 2 ? 1 : $self * fac_1 $self - 1
47 }
48
49 method fac_2() :($) {
50         $self < 2 ? 1 : $self * fac_2 $self - 1
51 }
52
53 ok id_1 1;
54 ok id_1(1), 'basic sanity';
55 ok id_2 1, 'simple prototype';
56 ok id_3(1), 'definition over multiple lines';
57 is add(2, 2), 4, '2 + 2 = 4';
58 is add(39, 3), 42, '39 + 3 = 42';
59 is_deeply [mymap { $_ * 2 } 2, 3, 5, 9], [4, 6, 10, 18], 'mymap works';
60 is fac_1(5), 120, 'fac_1';
61 is fac_2 6, 720, 'fac_2';
62 is method ($y) { $self . $y }->(method () { $self + 1 }->(3), method () { $self * 2 }->(1)), '42', 'anonyfun';