@@ -5,24 +5,63 @@ BEGIN {
55 @INC = ' ../lib' ;
66}
77
8- print " 1..3 \n " ;
8+ use v5.40 ;
99
10- use SelectSaver;
10+ use Test2::V0 - target => ' SelectSaver' ;
1111
12- open (FOO, " >" , " foo-$$ " ) || die ;
12+ ok dies { SelectSaver::new() }, ' Too few arguments to new dies' ;
13+ ok dies { CLASS-> new(undef , undef ) }, ' Too many arguments to new dies' ;
1314
14- print " ok 1\n " ;
15- {
16- my $saver = new SelectSaver(FOO);
17- print " foo\n " ;
18- }
15+ subtest ' bareword filehandle' => sub {
16+ use feature ' bareword_filehandles' ;
17+
18+ is refaddr(select ), refaddr(*STDOUT ), ' STDOUT is initially selected' ;
19+
20+ open FOO, ' >' , undef ;
21+
22+ {
23+ ok my $saver = CLASS-> new(*FOO), ' SelectSaver->new(*FOO)' ;
24+
25+ is refaddr(select ), refaddr(*FOO), ' FOO is now selected' ;
26+ }
27+
28+ is refaddr(select ), refaddr(*STDOUT ), ' STDOUT is selected again' ;
29+
30+ {
31+ ok my $saver = CLASS-> new(' FOO' ), ' SelectSaver->new("FOO")' ;
32+
33+ is refaddr(select ), refaddr(*FOO), ' FOO is now selected' ;
34+ }
35+
36+ is refaddr(select ), refaddr(*STDOUT ), ' STDOUT is selected again' ;
37+ };
38+
39+ subtest ' lexical filehandle' => sub {
40+ is refaddr(select ), refaddr(*STDOUT ), ' STDOUT is initially selected' ;
41+
42+ open my $fh , ' >' , undef ;
43+
44+ {
45+ ok my $saver = CLASS-> new($fh ), ' SelectSaver->new($fh)' ;
46+
47+ is refaddr(select ), refaddr($fh ), ' $fh is now selected' ;
48+ }
49+
50+ is refaddr(select ), refaddr(*STDOUT ), ' STDOUT is selected again' ;
51+ };
52+
53+ subtest ' no filehandle' => sub {
54+ is refaddr(select ), refaddr(*STDOUT ), ' STDOUT is initially selected' ;
55+
56+ {
57+ ok my $saver = CLASS-> new, ' SelectSaver->new' ;
58+
59+ ok select (STDERR ), ' select STDERR' ;
1960
20- # Get data written to file
21- open (FOO, " <" , " foo-$$ " ) || die ;
22- chomp ($foo = <FOO>);
23- close FOO;
24- unlink " foo-$$ " ;
61+ is refaddr(select ), refaddr(*STDERR ), ' STDERR is now selected' ;
62+ }
2563
26- print " ok 2\n " if $foo eq " foo" ;
64+ is refaddr(select ), refaddr(*STDOUT ), ' STDOUT is selected again' ;
65+ };
2766
28- print " ok 3 \n " ;
67+ done_testing ;
0 commit comments