0
0
Fork 0
forked from lix-project/hydra
hydra/t/Helper/attributeset.t
2021-03-18 11:33:36 -04:00

53 lines
1.4 KiB
Perl

use strict;
use warnings;
use Setup;
use Data::Dumper;
use Test2::V0;
use Hydra::Helper::AttributeSet;
subtest "splitting an attribute path in to its component parts" => sub {
my %values = (
"" => [''],
"." => ['', ''],
"...." => ['', '', '', '', ''],
"foobar" => ['foobar'],
"foo.bar" => ['foo', 'bar'],
"🌮" => ['🌮'],
# not supported: 'foo."bar.baz".tux' => [ 'foo', 'bar.baz', 'tux' ]
# the edge cases are fairly significant around escaping and unescaping.
);
for my $input (keys %values) {
my @value = @{$values{$input}};
my @components = Hydra::Helper::AttributeSet::splitPath($input);
is(\@components, \@value, "Splitting the attribute path: " . $input);
}
};
my $attrs = Hydra::Helper::AttributeSet->new();
$attrs->registerValue("foo");
$attrs->registerValue("bar.baz.tux");
$attrs->registerValue("bar.baz.bux.foo.bar.baz");
is(
$attrs->enumerate(),
[
# "foo": skipped since we're registering values, and we
# only want to track nested attribute sets.
# "bar.baz.tux": expand the path
"bar",
"bar.baz",
#"bar.baz.bux.foo.bar.baz": expand the path, but only register new
# attribute set names.
"bar.baz.bux",
"bar.baz.bux.foo",
"bar.baz.bux.foo.bar",
],
"Attribute set paths are registered."
);
done_testing;