Devel-DumpTrace
view release on metacpan or search on metacpan
t/22-substitute.t view on Meta::CPAN
package Test::DX;
use Devel::DumpTrace ':test';
use PadWalker;
use Test::More tests => 36;
use strict;
use warnings;
use vars qw($g @g %g $G);
# exercise Devel::DumpTrace::perform_variable_substitutions on objects
my ($m,@m,%m,$M);
our ($o,@o,%o,$O);
$Devel::DumpTrace::XEVAL_SEPARATOR = ':';
my $S = $Devel::DumpTrace::XEVAL_SEPARATOR;
my $T = $Devel::DumpTrace::HASH_PAIR_SEPARATOR;
{
package Array::Object;
sub new {
my ($pkg, @list) = @_;
return bless [ @list ], $pkg;
}
sub method {
my $self = shift @_;
return join ':', @$self;
}
};
{
package Hash::Object;
sub new {
my ($pkg, $value) = @_;
bless { attr => $value }, $pkg;
}
sub method {
my $self = shift @_;
return $self->{attr};
}
};
save_pads();
$g = $o = new Array::Object(1,2,3,'foo');
$m = new Array::Object(1,2,3,'foo');
$G = $M = $O = new Hash::Object('blah');
foreach my $var (qw($g $m $o)) {
my $subst = substitute($var, __PACKAGE__);
ok($subst eq "[Array::Object: 1,2,3,'foo']", "subst $var") or diag $subst;
my $xsubst = xsubstitute($var, __PACKAGE__);
ok($xsubst eq $var . $S . $subst, qq'xsubst $var');
}
foreach my $var (qw($G $M $O)) {
my $subst = substitute($var, __PACKAGE__);
ok($subst eq "{Hash::Object: 'attr'${T}'blah'}",
"subst $var") or diag $subst;
my $xsubst = xsubstitute($var, __PACKAGE__);
ok($xsubst eq $var . $S . $subst, qq'xsubst $var');
}
( run in 1.345 second using v1.01-cache-2.11-cpan-364913b4093 )