handle unicode keywords
[p5sagit/Function-Parameters.git] / t / unicode2.t
1 #!perl
2 use utf8;
3 use Test::More tests => 25;
4
5 use warnings FATAL => 'all';
6 use strict;
7
8 use Function::Parameters { pŕöç => 'function_strict' };
9
10 pŕöç hörps($x) { $x * 2 }
11 pŕöç drau($spın̈al_tap) { $spın̈al_tap * 3 }
12 pŕöç ääää($éééééé) { $éééééé * 4 }
13
14 is hörps(10), 20;
15 is drau(11), 33;
16 is ääää(12), 48;
17
18 is eval('pŕöç á(){} 1'), 1;
19 is á(), undef;
20
21 is eval('pŕöç ́(){} 1'), undef;
22 like $@, qr/pŕöç.* function body/s;
23
24 is eval(q<pŕöç 'hi(){} 1>), undef;
25 like $@, qr/pŕöç.* function body/s;
26
27 is eval('pŕöç ::hi($z){} 1'), 1;
28 is hi(42), undef;
29
30 is eval('pŕöç 123(){} 1'), undef;
31 like $@, qr/pŕöç.* function body/s;
32
33 is eval('pŕöç main::234(){} 1'), undef;
34 like $@, qr/pŕöç.* function body/s;
35
36 is eval('pŕöç m123($z){} 1'), 1;
37 is m123(42), undef;
38
39 is eval('pŕöç ::m234($z){} 1'), 1;
40 is m234(42), undef;
41
42 is eval { ääää }, undef;
43 like $@, qr/pŕöç.*ääää/s;
44
45 SKIP: {
46         eval { require Moo } or skip "info requires Moo", 4;
47
48         for my $info (Function::Parameters::info \&ääää) {
49                 is $info->keyword, 'pŕöç';
50                 is join(' ', $info->positional_required), '$éééééé';
51         }
52
53         for my $info (Function::Parameters::info \&drau) {
54                 is $info->keyword, 'pŕöç';
55                 is join(' ', $info->positional_required), '$spın̈al_tap';
56         }
57 }