Explicitly check that our $_; is special, and forced to main::
[p5sagit/p5-mst-13.2.git] / t / op / reverse.t
1 #!./perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6     require './test.pl';
7 }
8
9 plan tests => 21;
10
11 is(reverse("abc"), "cba");
12
13 $_ = "foobar";
14 is(reverse(), "raboof");
15
16 {
17     my @a = ("foo", "bar");
18     my @b = reverse @a;
19
20     is($b[0], $a[1]);
21     is($b[1], $a[0]);
22 }
23
24 {
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');
47 }
48
49 use Tie::Array;
50
51 {
52     tie my @a, 'Tie::StdArray';
53
54     @a = (1, 2, 3, 4);
55     @a = reverse @a;
56     is("@a", "4 3 2 1");
57
58     delete $a[1];
59     @a = reverse @a;
60     ok(!exists $a[2]);
61     is($a[0] . $a[1] . $a[3], '124');
62
63     @a = (5, 6, 7, 8, 9);
64     @a = reverse @a;
65     is("@a", "9 8 7 6 5");
66
67     delete $a[3];
68     @a = reverse @a;
69     ok(!exists $a[1]);
70     is($a[0] . $a[2] . $a[3] . $a[4], '5789');
71
72     delete $a[2];
73     @a = reverse @a;
74     ok(!exists $a[2] && !exists $a[3]);
75     is($a[0] . $a[1] . $a[4], '985');
76 }
77
78 {
79     # Unicode.
80
81     my $a = "\x{263A}\x{263A}x\x{263A}y\x{263A}";
82     my $b = scalar reverse($a);
83     my $c = scalar reverse($b);
84     is($a, $c);
85 }