File: 20_alias_helem.t

package info (click to toggle)
libdata-alias-perl 1.28-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 368 kB
  • sloc: perl: 1,976; makefile: 3
file content (74 lines) | stat: -rw-r--r-- 1,637 bytes parent folder | download
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
#!/usr/bin/perl -w

use strict;
use warnings qw( FATAL all NONFATAL void );
use lib 'lib';
use Test::More tests => 44;

use Data::Alias;

our %x;
our $T = 42;

is \alias($x{0} = $x{1}), \$x{1};
is \$x{0}, \$x{1};
is \alias($x{0} = $x{2}), \$x{2};
is \$x{0}, \$x{2};
isnt \$x{1}, \$x{2};

is \alias($x{0} ||= $T), \$T;
is \$x{0}, \$T;
isnt \alias($x{0} ||= $x{1}), \$x{1};
is \$x{0}, \$T;
is \alias($x{0} &&= $x{2}), \$x{2};
is \$x{0}, \$x{2};
isnt \alias($x{0} &&= $T), \$T;
is \$x{0}, \$x{2};

alias { is \(local $x{0} = $x{1}), \$x{1}; is \$x{0}, \$x{1} };
is \$x{0}, \$x{2};

alias { is \(local $x{3} = $x{1}), \$x{1}; is \$x{3}, \$x{1} };
ok !exists $x{3};

is \alias($x{0} = undef), \undef;
ok !exists $x{0};

sub{alias my ($y) = @_}->($x{0});
ok exists $x{0};

SKIP: {
no warnings 'deprecated';
skip "pseudo-hashes not supported anymore", 22 unless eval { [{1,1},1]->{1} };

our $y = [{0 => 1, 1 => 2, 2 => 3, 3 => 4}];

is \alias($y->{0} = $y->{1}), \$y->{1};
is \$y->{0}, \$y->{1};
is \alias($y->{0} = $y->{2}), \$y->{2};
is \$y->{0}, \$y->{2};
isnt \$y->{1}, \$y->{2};

is \alias($y->{0} ||= $T), \$T;
is \$y->{0}, \$T;
isnt \alias($y->{0} ||= $y->{1}), \$y->{1};
is \$y->{0}, \$T;
is \alias($y->{0} &&= $y->{2}), \$y->{2};
is \$y->{0}, \$y->{2};
isnt \alias($y->{0} &&= $T), \$T;
is \$y->{0}, \$y->{2};

alias { is \(local $y->{0} = $y->{1}), \$y->{1}; is \$y->{0}, \$y->{1} };
is \$y->{0}, \$y->{2};

alias { is \(local $y->{3} = $y->{1}), \$y->{1}; is \$y->{3}, \$y->{1} };
ok !exists $y->{3};

is \alias($y->{0} = undef), \undef;
ok !exists $y->{0};

sub{alias my ($x) = @_}->($y->{0});
ok exists $y->{0};
}

# vim: ft=perl