App-DPath
view release on metacpan or search on metacpan
#!/usr/bin/env perl
#
# Here we test the subroutines in the App::Dpath module in relative
# isolation.
#
################################################################################
use strict;
use warnings;
use Data::Dumper;
use Test::More tests => 74;
BEGIN { use_ok 'App::DPath'; }
my $opt;
is App::DPath::_format_flat_inner_scalar ('a'), 'a',
'_format_flat_inner_scalar scalar';
is App::DPath::_format_flat_inner_scalar (''), '',
'_format_flat_inner_scalar empty';
is App::DPath::_format_flat_inner_scalar (undef), '',
'_format_flat_inner_scalar undef to empty';
is App::DPath::_format_flat_inner_scalar (qw/a b/), 'a',
'_format_flat_inner_scalar array first element';
$opt->{separator} = '_';
is App::DPath::_format_flat_inner_array ($opt, ['a']), 'a',
'_format_flat_inner_array single value';
is App::DPath::_format_flat_inner_array ($opt, []), '',
'_format_flat_inner_array empty';
is App::DPath::_format_flat_inner_array ($opt, undef), '',
'_format_flat_inner_array undef to empty';
is App::DPath::_format_flat_inner_array ($opt, [qw/a b/]), 'a_b',
'_format_flat_inner_array array';
is App::DPath::_format_flat_inner_array ($opt, [qw/a b c/]), 'a_b_c',
'_format_flat_inner_array array > 2';
eval { App::DPath::_format_flat_inner_array ($opt, [ ['a'], 'b']); };
like $@, qr/unsupported innermost nesting/,
'_format_flat_inner_array nested ref exception thrown';
is App::DPath::_format_flat_inner_hash ($opt, { a => 'z' }), 'a=z',
'_format_flat_inner_hash one entry';
is App::DPath::_format_flat_inner_hash ($opt, {}), '',
'_format_flat_inner_hash empty';
is App::DPath::_format_flat_inner_hash ($opt, undef), '',
'_format_flat_inner_hash undef to empty';
like App::DPath::_format_flat_inner_hash ($opt, { a => 'z', b => 'y' }),
qr/a=z_b=y|b=y_a=z/,
'_format_flat_inner_hash multiple entries';
eval { App::DPath::_format_flat_inner_hash ($opt, { a => ['a'] }); };
like $@, qr/unsupported innermost nesting/,
'_format_flat_inner_hash nested ref exception thrown';
is App::DPath::_format_flat_outer ($opt, 'a'), "a\n",
'_format_flat_outer scalar';
is App::DPath::_format_flat_outer ($opt, { a => 'z' }), "a:z\n",
'_format_flat_outer one hash entry';
is App::DPath::_format_flat_outer ($opt, ['a']), "a\n",
'_format_flat_outer one array entry';
like App::DPath::_format_flat_outer ($opt, { a => ['z'], b => { c => 'y'} }),
qr/a:z\nb:c=y|b:c=y\na:z/,
'_format_flat_outer nested hash entry';
is App::DPath::_format_flat_outer ($opt, [['a'], { b => 'y' }]),
"a\nb=y\n",
'_format_flat_outer nested array entry';
$opt->{fb} = 1; # square brackets
$opt->{fi} = 1; # prefix array elements with index
is App::DPath::_format_flat_outer ($opt, [['a','b'], { b => 'y' }]),
"0:[a_b]\n1:[b=y]\n",
'_format_flat_outer nested array entry with brackets and prefix';
( run in 0.983 second using v1.01-cache-2.11-cpan-d8267643d1d )