source: trunk/third/perl/t/op/or.t @ 18450

Revision 18450, 942 bytes checked in by zacheiss, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18449, which included commits to RCS files with non-trunk default branches.
  • Property svn:executable set to *
Line 
1#!./perl
2
3# Test || in weird situations.
4
5BEGIN {
6    chdir 't' if -d 't';
7    @INC = '../lib';
8}
9
10
11package Countdown;
12
13sub TIESCALAR {
14  my $class = shift;
15  my $instance = shift || undef;
16  return bless \$instance => $class;
17}
18
19sub FETCH {
20  print "# FETCH!  ${$_[0]}\n";
21  return ${$_[0]}--;
22}
23
24
25package main;
26require './test.pl';
27
28plan( tests => 8 );
29
30
31my ($a, $b, $c);
32
33$! = 1;
34$a = $!;
35my $a_str = sprintf "%s", $a;
36my $a_num = sprintf "%d", $a;
37
38$c = $a || $b;
39
40is($c, $a_str);
41is($c+0, $a_num);   # force numeric context.
42
43$a =~ /./g or die "Match failed for some reason"; # Make $a magic
44
45$c = $a || $b;
46
47is($c, $a_str);
48is($c+0, $a_num);   # force numeric context.
49
50my $val = 3;
51
52$c = $val || $b;
53is($c, 3);
54
55tie $a, 'Countdown', $val;
56
57$c = $a;
58is($c, 3,       'Single FETCH on tied scalar');
59
60$c = $a;
61is($c, 2,       '   $tied = $var');
62
63$c = $a || $b;
64
65{
66    local $TODO = 'Double FETCH';
67    is($c, 1,   '   $tied || $var');
68}
Note: See TracBrowser for help on using the repository browser.