use strict;
use warnings;

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

plan tests => 2;

my $WRITTEN;

{
    package My::Framed;

    use parent qw( IO::Framed );

    sub READ {
        my ($fh) = @_;

        die if !$fh->isa('GLOB');

        $_[1] .= ('x') x $_[2];

        return $_[2];
    }

    sub WRITE {
        my ($fh, $payload) = @_;

        $WRITTEN .= $payload;

        return length $payload;
    }
}

my $framed = My::Framed->new(\*STDIN);

is(
    $framed->read(7),
    'xxxxxxx',
    'READ override',
);

$framed->write('Hello');

is( $WRITTEN, 'Hello', 'WRITE override' );