#!/usr/local/bin/perl -w
use
vars
qw($opt_t $opt_T)
;
getopts(
"tT"
);
plan tests;
chdir
($1)
if
($0 =~ /(.*)(\/|\\)(.*)/);
unshift
@INC
,
"./lib"
,
"../lib"
;
import
Log::Trace
qw(print)
if
(
$opt_t
);
deep_import Log::Trace
qw(print)
if
(
$opt_T
);
my
$expected
= {
'x.bar.value'
=> 1,
'x.baz.value'
=> 2
};
$PkgSansOverload::Counter
=0;
sub
new {
bless
{
value
=> ++
$PkgSansOverload::Counter
},
shift
}
$PkgWithOverload::Counter
=0;
eval
{
import
overload
'""'
=>
sub
{
'blah'
};
};
sub
new {
bless
{
value
=> ++
$PkgWithOverload::Counter
},
shift
}
my
$data
= {
'x'
=> {}};
$data
->{
'x'
}{
'bar'
} = PkgSansOverload->new;
$data
->{
'x'
}{
'baz'
} = PkgSansOverload->new;
my
$flat
= Hash::Flatten::flatten(
$data
);
DUMP(
$flat
);
ASSERT(EQUAL(
$flat
,
$expected
),
"expected value without overload"
);
$data
= {
'x'
=> {}};
$data
->{
'x'
}{
'bar'
} = PkgWithOverload->new;
$data
->{
'x'
}{
'baz'
} = PkgWithOverload->new;
$flat
= Hash::Flatten::flatten(
$data
);
DUMP(
$flat
);
ASSERT(EQUAL(
$flat
,
$expected
),
"same value with overloaded stringify"
);