forked from rafl/moosex-method-signatures
-
Notifications
You must be signed in to change notification settings - Fork 0
/
declarators.t
54 lines (44 loc) · 1.36 KB
/
declarators.t
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
54
use strict;
use warnings;
use Test::More tests => 16;
package MultipleDeclarators;
use Moose;
use MooseX::Method::Signatures
mtfnpy => ['CodeRef $flarg'],
qperty => ['Str $goof'],
zorbwf => ['HashRef $hakh'];
use Test::More;
mtfnpy foo (Int $yarg) {
ok(defined($self), '$self is defined');
ok(defined($flarg), '$flarg is defined');
ok(defined($yarg), '$yarg is defined');
is(ref($flarg), 'CODE', '$flarg is a coderef');
is($yarg, 1, '$yarg is 1');
}
qperty bar (ClassName $floof: Int $yarg) {
ok(defined($goof), '$goof is defined');
ok(defined($floof), '$floof is defined');
ok(defined($yarg), '$yarg is defined');
is($goof, 'HELLO', '$goof is HELLO');
is($floof, 'MultipleDeclarators', '$floof is a class name');
is($yarg, 1, '$yarg is 1');
}
zorbwf baz (Int $yarg) {
ok(defined($self), '$self is defined');
ok(defined($hakh), '$hakh is defined');
ok(defined($yarg), '$yarg is defined');
is(ref($hakh), 'HASH', '$hahk is a HashRef');
is($yarg, 1, '$yarg is 1');
}
package main;
my $md = MultipleDeclarators->new();
my ($mtfnpy, $qperty, $zorbwf);
{
no strict 'refs';
$mtfnpy = *{'MultipleDeclarators::foo'};
$qperty = *{'MultipleDeclarators::bar'};
$zorbwf = *{'MultipleDeclarators::baz'};
}
$mtfnpy->(sub { 1 }, $md, 1);
$qperty->('HELLO', 'MultipleDeclarators', 1);
$zorbwf->({}, $md, 1);