The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use Test;
BEGIN { plan tests => 10 };

use base 'Waft';
use strict;
BEGIN { eval { require warnings } ? 'warnings'->import : ( $^W = 1 ) }

use Waft::StashAccessor;

make_stash_accessor('foo_bar', { minlen => 1 });

my $obj = __PACKAGE__->new;

ok( do { $obj->set_foo_bar(      'baz'), 1 } );
ok( $obj->get_foo_bar eq         'baz' );
ok( do { $obj->set_foo_bar(      'ba'), 1 } );
ok( $obj->get_foo_bar eq         'ba' );
ok( do { $obj->set_foo_bar(      'b'), 1 } );
ok( $obj->get_foo_bar eq         'b' );
ok( not eval { $obj->set_foo_bar(''), 1 } );
ok( $obj->get_foo_bar eq         'b' );

$obj->stash->{foo_bar} = '';
ok( not eval { $obj->get_foo_bar, 1 } );

$obj->stash->{foo_bar} = undef;
ok( not eval { $obj->get_foo_bar, 1 } );