use strict;
use warnings;

BEGIN {
    eval { use autodie };
}

use Test::More;
use Test::FailWarnings;

plan tests => 4;

use IO::Framed::ReadWrite::Blocking ();
use IO::Framed::ReadWrite::NonBlocking ();

pipe( my $r, my $w );

my $blk = IO::Framed::ReadWrite::Blocking->new( $r, $w );
my $nblk = IO::Framed::ReadWrite::NonBlocking->new( $r, $w );

$blk->write(123);

is( $blk->read(3), 123, 'blocking I/O read and write' );

#----------------------------------------------------------------------

is( $nblk->get_write_queue_count(), 0, 'write queue' );

$nblk->write(456);
is( $nblk->get_write_queue_count(), 1, 'write queue, populated' );

1 while !$nblk->flush_write_queue();

my $in;
($in = $blk->read(3)) while !$in;
is( $in, 456, 'read from non-blocking' );