-
Notifications
You must be signed in to change notification settings - Fork 42
/
alias.t
78 lines (56 loc) · 1.31 KB
/
alias.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/perl
use perl5i::latest;
use Test::More;
# Test name construction
{
sub { 42 }->alias("foo");
is foo(), 42;
sub { 23 }->alias("Local::Class", "foo");
is Local::Class->foo, 23;
sub { 99 }->alias(qw(This Is A Little Silly));
is This::Is::A::Little::Silly(), 99;
sub { 123 }->alias("Some::thing");
is Some::thing(), 123, "caller only prepended if there's no ::";
sub { 234 }->alias("this", "that");
is this::that(), 234, "caller not prepended if there's more than one";
sub bar { "wibble" }
(\&bar)->alias("that");
is that(), "wibble";
}
# Things other than code.
{
our $foo;
(\23)->alias('foo');
is $foo, 23;
our @bar;
[1,2,3]->alias('bar');
is_deeply \@bar, [1,2,3];
our %baz;
{ foo => 23, bar => 42 }->alias('baz');
is_deeply \%baz, { foo => 23, bar => 42 };
}
# Make sure its an alias and not a copy
{
my @src = qw(1 2 3);
our @dest;
@src->alias("dest");
is \@src, \@dest;
my $src = \23;
our $dest;
$src->alias("dest");
is $src, \$dest;
}
# Errors
{
ok !eval {
sub{}->alias();
1;
};
like $@, qr{^\QNot enough arguments given to alias()};
ok !eval {
23->alias("bar");
1;
};
like $@, qr{scalars cannot be aliased};
}
done_testing();