-#!perl -T
+#!perl -Tw
-BEGIN {
- use Config;
- use Test::More;
- plan skip_all => "POSIX is unavailable"
- if $Config{'extensions'} !~ m!\bPOSIX\b!;
-}
use strict;
-use POSIX;
+use Config;
+use Test::More;
+
BEGIN {
- plan skip_all => "POSIX::Termios not implemented"
- if !eval "POSIX::Termios->new;1"
- and $@=~/not implemented/;
+ plan skip_all => "POSIX is unavailable"
+ if $Config{extensions} !~ m!\bPOSIX\b!;
}
+use POSIX ':termios_h';
-my @getters = qw(getcflag getiflag getispeed getlflag getoflag getospeed);
+plan skip_all => $@
+ if !eval "POSIX::Termios->new; 1" && $@ =~ /termios not implemented/;
-plan tests => 3 + 2 * (3 + NCCS() + @getters);
-
-my $r;
# create a new object
my $termios = eval { POSIX::Termios->new };
is( $@, '', "calling POSIX::Termios->new" );
-ok( defined $termios, "\tchecking if the object is defined" );
isa_ok( $termios, "POSIX::Termios", "\tchecking the type of the object" );
# testing getattr()
-
-SKIP: {
- -t STDIN or skip("STDIN not a tty", 2);
- $r = eval { $termios->getattr(0) };
- is( $@, '', "calling getattr(0)" );
- ok( defined $r, "\tchecking if the returned value is defined: $r" );
-}
-
-SKIP: {
- -t STDOUT or skip("STDOUT not a tty", 2);
- $r = eval { $termios->getattr(1) };
- is( $@, '', "calling getattr(1)" );
- ok( defined $r, "\tchecking if the returned value is defined: $r" );
-}
-
-SKIP: {
- -t STDERR or skip("STDERR not a tty", 2);
- $r = eval { $termios->getattr(2) };
- is( $@, '', "calling getattr(2)" );
- ok( defined $r, "\tchecking if the returned value is defined: $r" );
+foreach my $name (qw(STDIN STDOUT STDERR)) {
+ my $handle = $::{$name};
+ SKIP: {
+ skip("$name not a tty", 2) unless -t $handle;
+ my $fileno = fileno $handle;
+ my $r = eval { $termios->getattr($fileno) };
+ is($@, '', "calling getattr($fileno) for $name");
+ isnt($r, undef, "returned value ($r) is defined");
+ }
}
# testing getcc()
-for my $i (0..NCCS()-1) {
- $r = eval { $termios->getcc($i) };
+for my $i (0..NCCS-1) {
+ my $r = eval { $termios->getcc($i) };
is( $@, '', "calling getcc($i)" );
- ok( defined $r, "\tchecking if the returned value is defined: $r" );
+ like($r, qr/\A-?[0-9]+\z/, 'returns an integer');
}
-# testing getcflag()
-for my $method (@getters) {
- $r = eval { $termios->$method() };
+for my $method (qw(getcflag getiflag getispeed getlflag getoflag getospeed)) {
+ my $r = eval { $termios->$method() };
is( $@, '', "calling $method()" );
- ok( defined $r, "\tchecking if the returned value is defined: $r" );
+ like($r, qr/\A-?[0-9]+\z/, 'returns an integer');
}
+done_testing();