#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 14;
my @GOT;
sub debug ($) { push @GOT, shift }
{
use autobox
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyDefault' ],
FLOAT => [ 'MyDefault' ],
STRING => [ 'MyDefault' ],
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
INTEGER => 'MyInteger',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyInteger', 'MyDefault' ],
FLOAT => [ 'MyDefault' ],
STRING => [ 'MyDefault' ],
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
FLOAT => 'MyFloat',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyDefault' ],
FLOAT => [ 'MyFloat', 'MyDefault' ],
STRING => [ 'MyDefault' ],
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
STRING => 'MyString',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyDefault' ],
FLOAT => [ 'MyDefault' ],
STRING => [ 'MyString', 'MyDefault' ],
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
ARRAY => 'MyArray',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyDefault' ],
FLOAT => [ 'MyDefault' ],
STRING => [ 'MyDefault' ],
ARRAY => [ 'MyArray' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
HASH => 'MyHash',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyDefault' ],
FLOAT => [ 'MyDefault' ],
STRING => [ 'MyDefault' ],
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyHash' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
CODE => 'MyCode',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyDefault' ],
FLOAT => [ 'MyDefault' ],
STRING => [ 'MyDefault' ],
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyCode' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
INTEGER => 'MyInteger',
NUMBER => 'MyNumber',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyInteger', 'MyNumber', 'MyDefault' ],
FLOAT => [ 'MyNumber', 'MyDefault' ],
STRING => [ 'MyDefault' ],
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
INTEGER => 'MyInteger',
NUMBER => 'MyNumber',
SCALAR => 'MyScalar',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyInteger', 'MyNumber', 'MyScalar' ],
FLOAT => [ 'MyNumber', 'MyScalar' ],
STRING => [ 'MyScalar' ],
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
INTEGER => 'MyInteger',
NUMBER => 'MyNumber',
SCALAR => 'MyScalar',
UNIVERSAL => 'MyUniversal',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyInteger', 'MyNumber', 'MyScalar', 'MyUniversal' ],
FLOAT => [ 'MyNumber', 'MyScalar', 'MyUniversal' ],
STRING => [ 'MyScalar', 'MyUniversal' ],
ARRAY => [ 'MyDefault', 'MyUniversal' ],
HASH => [ 'MyDefault', 'MyUniversal' ],
CODE => [ 'MyDefault', 'MyUniversal' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
SCALAR => 'MyScalar',
ARRAY => 'MyArray',
HASH => 'MyHash',
CODE => 'MyCode',
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyScalar' ],
FLOAT => [ 'MyScalar' ],
STRING => [ 'MyScalar' ],
ARRAY => [ 'MyArray' ],
HASH => [ 'MyHash' ],
CODE => [ 'MyCode' ]
};
is_deeply(shift(@GOT), $want);
}
# test undef
{
use autobox
DEFAULT => undef,
DEBUG => \&debug;
my $want = { };
is_deeply(shift(@GOT), $want);
}
{
use autobox
SCALAR => undef,
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
ARRAY => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}
{
use autobox
ARRAY => undef,
DEFAULT => 'MyDefault',
DEBUG => \&debug;
my $want = {
INTEGER => [ 'MyDefault' ],
FLOAT => [ 'MyDefault' ],
STRING => [ 'MyDefault' ],
HASH => [ 'MyDefault' ],
CODE => [ 'MyDefault' ]
};
is_deeply(shift(@GOT), $want);
}