Commit | Line | Data |
247cbd51 |
1 | #!perl |
2 | |
7817d698 |
3 | use Test::More tests => 48; |
247cbd51 |
4 | |
5 | use warnings FATAL => 'all'; |
6 | use strict; |
7 | |
8 | { |
9 | use Function::Parameters {}; # ZERO BABIES |
10 | |
11 | is eval('fun foo :() {}; 1'), undef; |
12 | like $@, qr/syntax error/; |
13 | } |
14 | |
15 | { |
16 | use Function::Parameters { pound => 'function' }; |
17 | |
18 | is eval('fun foo :() {}; 1'), undef; |
19 | like $@, qr/syntax error/; |
20 | |
7817d698 |
21 | pound foo_1($x, $u) { $x } |
247cbd51 |
22 | is foo_1(2 + 2), 4; |
23 | |
24 | no Function::Parameters qw(pound); |
25 | |
26 | is eval('pound foo() {}; 1'), undef; |
27 | like $@, qr/syntax error/; |
28 | } |
29 | |
30 | { |
31 | use Function::Parameters { pound => 'method' }; |
32 | |
33 | is eval('fun foo () {}; 1'), undef; |
34 | like $@, qr/syntax error/; |
35 | |
7817d698 |
36 | pound foo_2($u) { $self } |
247cbd51 |
37 | is foo_2(2 + 2), 4; |
38 | |
39 | no Function::Parameters qw(pound); |
40 | |
41 | is eval('pound unfoo :() {}; 1'), undef; |
42 | like $@, qr/syntax error/; |
43 | } |
44 | |
45 | { |
46 | is eval('pound unfoo( ){}; 1'), undef; |
47 | like $@, qr/syntax error/; |
48 | |
49 | use Function::Parameters { pound => 'classmethod' }; |
50 | |
51 | is eval('fun foo () {}; 1'), undef; |
52 | like $@, qr/syntax error/; |
53 | |
7817d698 |
54 | pound foo_3($u) { $class } |
247cbd51 |
55 | is foo_3(2 + 2), 4; |
56 | |
57 | no Function::Parameters; |
58 | |
59 | is eval('pound unfoo :lvalue{}; 1'), undef; |
60 | like $@, qr/syntax error/; |
61 | } |
62 | |
7817d698 |
63 | { |
64 | use Function::Parameters { pound => 'function_strict' }; |
65 | |
66 | is eval('fun foo :() {}; 1'), undef; |
67 | like $@, qr/syntax error/; |
68 | |
69 | pound foo_4($x) { $x } |
70 | is foo_4(2 + 2), 4; |
71 | |
72 | is eval('foo_4(5, 6)'), undef; |
73 | like $@, qr/Too many arguments/; |
74 | |
75 | no Function::Parameters qw(pound); |
76 | |
77 | is eval('pound foo() {}; 1'), undef; |
78 | like $@, qr/syntax error/; |
79 | } |
80 | |
81 | { |
82 | use Function::Parameters { pound => 'method_strict' }; |
83 | |
84 | is eval('fun foo () {}; 1'), undef; |
85 | like $@, qr/syntax error/; |
86 | |
87 | pound foo_5() { $self } |
88 | is foo_5(2 + 2), 4; |
89 | |
90 | is eval('foo_5(5, 6)'), undef; |
91 | like $@, qr/Too many arguments/; |
92 | |
93 | no Function::Parameters qw(pound); |
94 | |
95 | is eval('pound unfoo :() {}; 1'), undef; |
96 | like $@, qr/syntax error/; |
97 | } |
98 | |
99 | { |
100 | is eval('pound unfoo( ){}; 1'), undef; |
101 | like $@, qr/syntax error/; |
102 | |
103 | use Function::Parameters { pound => 'classmethod_strict' }; |
104 | |
105 | is eval('fun foo () {}; 1'), undef; |
106 | like $@, qr/syntax error/; |
107 | |
108 | pound foo_6() { $class } |
109 | is foo_6(2 + 2), 4; |
110 | |
111 | is eval('foo_6(5, 6)'), undef; |
112 | like $@, qr/Too many arguments/; |
113 | |
114 | no Function::Parameters; |
115 | |
116 | is eval('pound unfoo :lvalue{}; 1'), undef; |
117 | like $@, qr/syntax error/; |
118 | } |
119 | |
247cbd51 |
120 | is eval('Function::Parameters->import(":QQQQ"); 1'), undef; |
121 | like $@, qr/valid identifier/; |
122 | |
123 | is eval('Function::Parameters->import({":QQQQ" => "function"}); 1'), undef; |
124 | like $@, qr/valid identifier/; |
125 | |
126 | is eval('Function::Parameters->import({"jetsam" => "QQQQ"}); 1'), undef; |
127 | like $@, qr/valid type/; |