From aabf565f76b73fc19445d9d46a750c59bfd2b6b1 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Tue, 6 Sep 2011 19:37:35 +0200 Subject: Add tests for POSIX::Termios->get[iocf]flags(). --- ext/POSIX/t/termios.t | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'ext') 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(); -- cgit v1.2.1