Move IO from ext/ to dist/
[perl.git] / dist / IO / t / io_linenum.t
1 #!./perl
2
3 # test added 29th April 1999 by Paul Johnson (pjcj@transeda.com)
4 # updated    28th May   1999 by Paul Johnson
5
6 my $File;
7
8 BEGIN {
9     $File = __FILE__;
10     require strict; import strict;
11 }
12
13 use Test;
14
15 BEGIN { plan tests => 12 }
16
17 use IO::File;
18
19 sub lineno
20 {
21   my ($f) = @_;
22   my $l;
23   $l .= "$. ";
24   $l .= $f->input_line_number;
25   $l .= " $.";                     # check $. before and after input_line_number
26   $l;
27 }
28
29 my $t;
30
31 open (F, $File) or die $!;
32 my $io = IO::File->new($File) or die $!;
33
34 <F> for (1 .. 10);
35 ok(lineno($io), "10 0 10");
36
37 $io->getline for (1 .. 5);
38 ok(lineno($io), "5 5 5");
39
40 <F>;
41 ok(lineno($io), "11 5 11");
42
43 $io->getline;
44 ok(lineno($io), "6 6 6");
45
46 $t = tell F;                                        # tell F; provokes a warning
47 ok(lineno($io), "11 6 11");
48
49 <F>;
50 ok(lineno($io), "12 6 12");
51
52 select F;
53 ok(lineno($io), "12 6 12");
54
55 <F> for (1 .. 10);
56 ok(lineno($io), "22 6 22");
57
58 $io->getline for (1 .. 5);
59 ok(lineno($io), "11 11 11");
60
61 $t = tell F;
62 # We used to have problems here before local $. worked.
63 # input_line_number() used to use select and tell.  When we did the
64 # same, that mechanism broke.  It should work now.
65 ok(lineno($io), "22 11 22");
66
67 {
68   local $.;
69   $io->getline for (1 .. 5);
70   ok(lineno($io), "16 16 16");
71 }
72
73 ok(lineno($io), "22 16 22");