my
$opts
= {};
test_pathing(
$opts
,
[
qw(
a[4]
a[1].b.c.d
a[3].turnip
a[0][1][1][1][1].[2].too.long
)
],
[
qw(
a[4]
a[1].b.c.d
a[3].turnip
a[0][1][1][1][1][2].too.long
)
],
'Basic'
,
);
test_pathing(
$opts
,
[
qw(
[4]
[1].b.c.d
[3].turnip
[0][1][1][1][1].[2].too.long
)
],
[
qw(
[4]
[1].b.c.d
[3].turnip
[0][1][1][1][1][2].too.long
)
],
'Array-is-first'
,
);
test_pathing(
$opts
,
[
q{"This can't be a terrible mistake"[0].value}
,
q{'"Oh, but it can..." said the spider'.[0].value}
,
],
[
q{"This can't be a terrible mistake"[0].value}
,
q{'"Oh, but it can..." said the spider'[0].value}
,
],
'Quoted without normalize'
,
);
test_pathing(
$opts
,
[
'a.b...c[0].""."".'
.
"''"
,
],
[
'a.b...c[0].""."".'
.
"''"
,
],
'Zero-length keys without normalize'
,
);
$opts
= {
auto_normalize
=> 1 };
test_pathing(
$opts
,
[
q{'This can\'t be a terrible mistake'[0].value}
,
q{"\"Oh, but it can...\" said the spider".[0].value}
,
],
[
q{"This can't be a terrible mistake"[0].value}
,
q{'"Oh, but it can..." said the spider'[0].value}
,
],
'Quoted with normalize'
,
);
test_pathing(
$opts
,
[
'a.b...c[0].""."".'
.
"''"
,
],
[
"a.b.''.''.c[0].''.''.''"
,
],
'Zero-length keys with normalize'
,
);
test_pathing_failures(
$opts
,
[
qw(
123[hash].1111
"foo".["bar"]
aaa[999999999].bbb
)
,
' aaa.bbb.ccc[1] '
,
],
[
qr/^Found unparsable step/
,
qr/^Found unparsable step/
,
qr/^Found unparsable step/
,
qr/^Found unparsable step/
,
],
'Fails'
,
);