-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinfo.t
More file actions
54 lines (42 loc) · 1.24 KB
/
info.t
File metadata and controls
54 lines (42 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
use Test2::V0;
use Function::Interface;
use Types::Standard -types;
fun foo() :Return();
fun bar(Str $msg) :Return(Int);
method baz() :Return();
subtest 'basic' => sub {
my $info = Function::Interface::info __PACKAGE__;
is $info->package, 'main';
is @{$info->functions}, 3;
subtest 'foo' => sub {
my $i = $info->functions->[0];
is $i->subname, 'foo';
is $i->keyword, 'fun';
is $i->params, [];
is $i->return, [];
};
subtest 'bar' => sub {
my $i = $info->functions->[1];
is $i->subname, 'bar';
is $i->keyword, 'fun';
is @{$i->params}, 1;
isa_ok $i->params->[0], 'Function::Interface::Info::Function::Param';
ok $i->params->[0]->type eq Str;
is $i->params->[0]->name, '$msg';
is @{$i->return}, 1;
isa_ok $i->return->[0], 'Function::Interface::Info::Function::ReturnParam';
ok $i->return->[0]->type eq Int;
};
subtest 'baz' => sub {
my $i = $info->functions->[2];
is $i->subname, 'baz';
is $i->keyword, 'method';
is $i->params, [];
is $i->return, [];
};
};
subtest 'empty' => sub {
my $info = Function::Interface::info 'Hoge';
is $info, undef;
};
done_testing;