1N/A#!./perl
1N/A
1N/A$| = 1;
1N/A
1N/ABEGIN {
1N/A chdir 't' if -d 't';
1N/A @INC = '../lib';
1N/A}
1N/A
1N/Aif ($^O eq 'VMS') {
1N/A print "1..11\n";
1N/A foreach (1..11) { print "ok $_ # skipped for VMS\n"; }
1N/A exit 0;
1N/A}
1N/A
1N/Ause Env qw(@FOO);
1N/Ause vars qw(@BAR);
1N/A
1N/Asub array_equal
1N/A{
1N/A my ($a, $b) = @_;
1N/A return 0 unless scalar(@$a) == scalar(@$b);
1N/A for my $i (0..scalar(@$a) - 1) {
1N/A return 0 unless $a->[$i] eq $b->[$i];
1N/A }
1N/A return 1;
1N/A}
1N/A
1N/Asub test
1N/A{
1N/A my ($desc, $code) = @_;
1N/A
1N/A &$code;
1N/A
1N/A print "# $desc...\n";
1N/A print "# FOO = (", join(", ", @FOO), ")\n";
1N/A print "# BAR = (", join(", ", @BAR), ")\n";
1N/A
1N/A if (defined $check) { print "not " unless &$check; }
1N/A else { print "not " unless array_equal(\@FOO, \@BAR); }
1N/A
1N/A print "ok ", ++$i, "\n";
1N/A}
1N/A
1N/Aprint "1..11\n";
1N/A
1N/Atest "Assignment", sub {
1N/A @FOO = qw(a B c);
1N/A @BAR = qw(a B c);
1N/A};
1N/A
1N/Atest "Storing", sub {
1N/A $FOO[1] = 'b';
1N/A $BAR[1] = 'b';
1N/A};
1N/A
1N/Atest "Truncation", sub {
1N/A $#FOO = 0;
1N/A $#BAR = 0;
1N/A};
1N/A
1N/Atest "Push", sub {
1N/A push @FOO, 'b', 'c';
1N/A push @BAR, 'b', 'c';
1N/A};
1N/A
1N/Atest "Pop", sub {
1N/A pop @FOO;
1N/A pop @BAR;
1N/A};
1N/A
1N/Atest "Shift", sub {
1N/A shift @FOO;
1N/A shift @BAR;
1N/A};
1N/A
1N/Atest "Push", sub {
1N/A push @FOO, 'c';
1N/A push @BAR, 'c';
1N/A};
1N/A
1N/Atest "Unshift", sub {
1N/A unshift @FOO, 'a';
1N/A unshift @BAR, 'a';
1N/A};
1N/A
1N/Atest "Reverse", sub {
1N/A @FOO = reverse @FOO;
1N/A @BAR = reverse @BAR;
1N/A};
1N/A
1N/Atest "Sort", sub {
1N/A @FOO = sort @FOO;
1N/A @BAR = sort @BAR;
1N/A};
1N/A
1N/Atest "Splice", sub {
1N/A splice @FOO, 1, 1, 'B';
1N/A splice @BAR, 1, 1, 'B';
1N/A};