summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2011-09-06 19:37:35 +0200
committerNicholas Clark <nick@ccl4.org>2011-09-13 11:28:05 +0200
commitaabf565f76b73fc19445d9d46a750c59bfd2b6b1 (patch)
tree0500842b8028383a86e5fded3f4fa07d307fe471 /ext
parent5118227b39245912907b3e190edaef8ddb6fb605 (diff)
downloadperl-aabf565f76b73fc19445d9d46a750c59bfd2b6b1.tar.gz
Add tests for POSIX::Termios->get[iocf]flags().
Diffstat (limited to 'ext')
-rw-r--r--ext/POSIX/t/termios.t33
1 files changed, 33 insertions, 0 deletions
diff --git a/ext/POSIX/t/termios.t b/ext/POSIX/t/termios.t
index 2f592d5f97..8df07be04d 100644
--- a/ext/POSIX/t/termios.t
+++ b/ext/POSIX/t/termios.t
@@ -90,6 +90,39 @@ if (defined $termios) {
is($t->setispeed($in), '0 but true', "setispeed($in)");
is($t->getispeed(), $in, "getispeed() for $in");
}
+
+ my %state;
+ my @flags = qw(iflag oflag cflag lflag);
+ # I'd prefer to use real values per flag, but can only find OPOST in
+ # POSIX.pm for oflag
+ my @values = (0, 6, 9, 42);
+
+ # initialise everything
+ foreach (@flags) {
+ my $method = 'set' . $_;
+ $t->$method(0);
+ $state{$_} = 0;
+ }
+
+ sub testflags {
+ my ($flag, $values, @rest) = @_;
+ $! = 0;
+ my $method = 'set' . $flag;
+ foreach (@$values) {
+ $t->$method($_);
+ $state{$flag} = $_;
+
+ my $state = join ', ', map {"$_=$state{$_}"} keys %state;
+ while (my ($flag, $expect) = each %state) {
+ my $method = 'get' . $flag;
+ is($t->$method(), $expect, "$method() for $state");
+ }
+
+ testflags(@rest) if @rest;
+ }
+ }
+
+ testflags(map {($_, \@values)} @flags);
}
done_testing();