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 )