The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More;
use Plack::TempBuffer;

my $warn = '';
$SIG{__WARN__} = sub { $warn .= $_[0] };

{
    my $b = Plack::TempBuffer->new(-1);
    $b->print("foo");
    is $b->size, 3;
    my $fh = $b->rewind;
    is do { local $/; <$fh> }, 'foo';
    $fh->seek(0, 0);
}

{
    local $Plack::TempBuffer::MaxMemoryBufferSize = 12;
    my $b = Plack::TempBuffer->new;
    is $b->size, 0;
    $b->print("foo") for 1..5;
    is $b->size, 15;
    my $fh = $b->rewind;
    isa_ok $fh, 'IO::File';
    is do { local $/; <$fh> }, ('foo' x 5);
    like $warn, qr/MaxMemoryBufferSize.*deprecated/;
    $warn = '';
}

{
    local $Plack::TempBuffer::MaxMemoryBufferSize = 0;
    my $b = Plack::TempBuffer->new(3);
    $b->print("foo\n");
    is $b->size, 4;
    my $fh = $b->rewind;
    isa_ok $fh, 'IO::File';
    is do { local $/; <$fh> }, "foo\n";
    like $warn, qr/MaxMemoryBufferSize.*deprecated/;
    $warn = '';
}

done_testing;