Commit | Line | Data |
---|---|---|
3168554e JH |
1 | #!./perl |
2 | ||
3 | BEGIN { | |
4 | chdir 't' if -d 't'; | |
5 | @INC = '../lib'; | |
a8136c1e | 6 | require './test.pl'; |
3168554e JH |
7 | } |
8 | ||
789bd863 | 9 | plan tests => 26; |
3168554e | 10 | |
a8136c1e | 11 | is(reverse("abc"), "cba"); |
3168554e JH |
12 | |
13 | $_ = "foobar"; | |
a8136c1e | 14 | is(reverse(), "raboof"); |
3168554e JH |
15 | |
16 | { | |
17 | my @a = ("foo", "bar"); | |
18 | my @b = reverse @a; | |
19 | ||
a8136c1e VP |
20 | is($b[0], $a[1]); |
21 | is($b[1], $a[0]); | |
3168554e JH |
22 | } |
23 | ||
24 | { | |
484c818f VP |
25 | my @a = (1, 2, 3, 4); |
26 | @a = reverse @a; | |
27 | is("@a", "4 3 2 1"); | |
28 | ||
29 | delete $a[1]; | |
30 | @a = reverse @a; | |
31 | ok(!exists $a[2]); | |
32 | is($a[0] . $a[1] . $a[3], '124'); | |
33 | ||
34 | @a = (5, 6, 7, 8, 9); | |
35 | @a = reverse @a; | |
36 | is("@a", "9 8 7 6 5"); | |
37 | ||
38 | delete $a[3]; | |
39 | @a = reverse @a; | |
40 | ok(!exists $a[1]); | |
41 | is($a[0] . $a[2] . $a[3] . $a[4], '5789'); | |
42 | ||
43 | delete $a[2]; | |
44 | @a = reverse @a; | |
45 | ok(!exists $a[2] && !exists $a[3]); | |
46 | is($a[0] . $a[1] . $a[4], '985'); | |
54113d22 RGS |
47 | |
48 | my @empty; | |
49 | @empty = reverse @empty; | |
50 | is("@empty", ""); | |
484c818f VP |
51 | } |
52 | ||
53 | use Tie::Array; | |
54 | ||
55 | { | |
56 | tie my @a, 'Tie::StdArray'; | |
57 | ||
58 | @a = (1, 2, 3, 4); | |
59 | @a = reverse @a; | |
60 | is("@a", "4 3 2 1"); | |
61 | ||
62 | delete $a[1]; | |
63 | @a = reverse @a; | |
64 | ok(!exists $a[2]); | |
65 | is($a[0] . $a[1] . $a[3], '124'); | |
66 | ||
67 | @a = (5, 6, 7, 8, 9); | |
68 | @a = reverse @a; | |
69 | is("@a", "9 8 7 6 5"); | |
70 | ||
71 | delete $a[3]; | |
72 | @a = reverse @a; | |
73 | ok(!exists $a[1]); | |
74 | is($a[0] . $a[2] . $a[3] . $a[4], '5789'); | |
75 | ||
76 | delete $a[2]; | |
77 | @a = reverse @a; | |
78 | ok(!exists $a[2] && !exists $a[3]); | |
79 | is($a[0] . $a[1] . $a[4], '985'); | |
6391ac7e RGS |
80 | |
81 | tie my @empty, "Tie::StdArray"; | |
82 | @empty = reverse @empty; | |
83 | is(scalar(@empty), 0); | |
484c818f VP |
84 | } |
85 | ||
86 | { | |
3168554e JH |
87 | # Unicode. |
88 | ||
89 | my $a = "\x{263A}\x{263A}x\x{263A}y\x{263A}"; | |
90 | my $b = scalar reverse($a); | |
91 | my $c = scalar reverse($b); | |
a8136c1e | 92 | is($a, $c); |
3168554e | 93 | } |
789bd863 VP |
94 | |
95 | { | |
96 | # Lexical $_. | |
97 | sub blurp { my $_ = shift; reverse } | |
98 | ||
99 | is(blurp("foo"), "oof"); | |
100 | is(sub { my $_ = shift; reverse }->("bar"), "rab"); | |
101 | { | |
102 | local $_ = "XXX"; | |
103 | is(blurp("paz"), "zap"); | |
104 | } | |
105 | } |