use Test::More;
use lib "lib";
use lib "blib/lib";
use lib "blib/arch";

use IO::FD;
use IO::FD::Constants;

use feature ":all";
#say @IO::FD::Constants::EXPORT;

use Fcntl;
use strict;
use warnings;
################################
# use constant {               #
#         POLLIN=>0x0001,      #
#         POLLPRI=>0x0002,     #
#         POLLOUT=>0x0004,     #
#         POLLRDNORM=>0x0040,  #
#         POLLWRNORM=>POLLOUT, #
#         POLLRDBAND=>0x0080,  #
#         POLLWRBAND=>0x0100,  #
#         POLLERR=>0x0008,     #
#         POLLHUP=>0x0010,     #
#         POLLNVAL=>0x0020     #
# };                           #
################################

#Create a pipe with a read fd and a write fd
ok defined IO::FD::pipe(my $read, my $write);

for($read,$write){
	my $flags=IO::FD::fcntl( $_, F_GETFL,0);
	die "Could not set non blocking" unless defined IO::FD::fcntl($_, F_SETFL, $flags|O_NONBLOCK);
}

#Poll
#pack "iss"; #int=> fd short=>flags to watch,  short=>result flags;
my %position;
my $list="";
$list.=pack POLLFD_PACKER, $read, POLLIN, 0, $write, POLLOUT, 0;
for(0..10){
	#Build list to monitor
	#execute poll
	my $res=IO::FD::poll($list,0);
	ok $res==1 , "Write ready";

}
done_testing;