Devel-ebug-Wx
view release on metacpan or search on metacpan
t/a01_expressions_model.t view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
use Test::More tests => 34;
use Test::Differences;
use Devel::ebug;
use Devel::ebug::Wx::View::Expressions;
my $called = 0;
{
package MyEbug;
sub eval_level {
++$called;
shift->{ebug}->eval_level( @_ );
}
our $AUTOLOAD;
sub AUTOLOAD {
( my $method = $AUTOLOAD ) =~ s/.*:://;
return if $method eq 'DESTROY';
return shift->{ebug}->$method( @_ );
}
}
sub _normalize($);
sub _normalize($) {
my $val = shift;
if( ref( $val ) eq 'ARRAY' ) {
return [ map _normalize( $_ ), @$val ];
} elsif( ref( $val ) eq 'HASH' ) {
return { map { $_ => _normalize( $val->{$_} ) } keys %$val };
} elsif( defined $val ) {
$val =~ s/(ARRAY|HASH)\(0x.*?\)/$1(0xaddr)/;
return $val;
} else {
return '<undef>';
}
}
my $ebug = Devel::ebug->new;
my $myebug = bless { ebug => $ebug }, 'MyEbug';
$myebug->program( '-e 42' );
$myebug->load;
my $model = Devel::ebug::Wx::View::Expressions::Model->new
( { _expressions => [], _values => [], ebug => $myebug } );
is( $model->get_child_count( '' ), 0 );
is( $called, 0 );
$model->add_expression( 'die "moo\n"' );
$model->add_expression( '[1,2,[3,4,5,{6,7,8,9}]]' );
is( $model->get_child_count( '' ), 2 );
is( $called, 0 );
eq_or_diff( [ $model->expressions ],
[ { level => 0, expression => 'die "moo\n"', },
{ level => 0, expression => '[1,2,[3,4,5,{6,7,8,9}]]', },
] );
( run in 1.736 second using v1.01-cache-2.11-cpan-364913b4093 )