1#============================================================= -*-perl-*-
2#
3# t/core/dump.t
4#
5# Test the Badger::Debug module.
6#
7# Written by Andy Wardley <abw@wardley.org>
8#
9# This is free software; you can redistribute it and/or modify it
10# under the same terms as Perl itself.
11#
12#========================================================================
13
14use strict;
15use warnings;
16
17use lib qw( ./lib ../lib ../../lib t/core/lib );
18use Badger::Debug;
19use Badger::Base;
20use Badger::Test
21    tests => 1,
22    debug => 'Badger::Debug',
23    args  => \@ARGV;
24
25
26
27#-----------------------------------------------------------------------
28# test dump methods
29#-----------------------------------------------------------------------
30
31package My::Badger::Base;
32use base 'Badger::Base';
33use Badger::Debug ':debug :dump';
34
35sub init{
36    my ($self, $config) = @_;
37    @$self{ keys %$config } = values %$config;
38    return $self;
39}
40
41package My::Badger::One;
42use base 'My::Badger::Base';
43use Badger::Debug dumps => 'x y';
44
45sub init{
46    my ($self, $config) = @_;
47    @$self{ keys %$config } = values %$config;
48    return $self;
49}
50
51package My::Badger::Two;
52use base 'My::Badger::Base';
53
54sub NOT_dumper {
55    my ($self, $indent) = @_;
56    $self->dump_hash($self,$indent,'-hidden');
57}
58
59package My::Badger::Tre;
60use base 'My::Badger::Base';
61use Badger::Debug ':dump';
62
63package main;
64
65my $one = My::Badger::One->new( x => 10, y => 20, secret => 'password' );
66my $two = My::Badger::Two->new( pi => 3.142, e => 2.718, one => $one, hidden => 'treasure' );
67my $tre = My::Badger::Tre->new(
68    two    => $two,
69    person => {
70        name  => 'Arthur Dent',
71        email => 'dent@tt2.org',
72    },
73    products => ['widget123', 'doodah99'],
74);
75
76my $text = $tre->dump;
77#print $text;
78like( $text, qr/one => \{\s+x => 10,\s+y => 20\s+\}/, 'partial dump of one' );
79