The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;
use Test::More;
use Test::Exception;

my $pkg;
BEGIN {
    $pkg = 'Catmandu::Buffer';
    use_ok $pkg;
}
require_ok $pkg;

{
    package T::Buffer;
    use Moo;
    with $pkg;
}

my $b = T::Buffer->new;

can_ok $b, 'buffer_size';
can_ok $b, 'buffer';
can_ok $b, 'default_buffer_size';
can_ok $b, 'buffer_used';
can_ok $b, 'buffer_is_full';
can_ok $b, 'buffer_add';
can_ok $b, 'clear_buffer';

is $b->buffer_size, $b->default_buffer_size;

$b = T::Buffer->new(buffer_size => 5);
is $b->buffer_size, 5;
is $b->buffer_used, 0;

$b->buffer_add(1,2,3);
is $b->buffer_used, 3;
is_deeply $b->buffer, [1,2,3];
is $b->buffer_is_full, 0;

$b->buffer_add(4,5,6);
is $b->buffer_used, 6;
is_deeply $b->buffer, [1,2,3,4,5,6];
is $b->buffer_is_full, 1;

$b->clear_buffer;
is $b->buffer_used, 0;
is_deeply $b->buffer, [];
is $b->buffer_is_full, 0;

done_testing 21;