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;