The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;
#use Test::NoWarnings;

use Data::Peek;

is (DHexDump (undef),		undef,			'undef');
is (DHexDump (""),		"",			'""');

for (split m/##\n/ => test_data ()) {
    my ($desc, $in, $out) = split m/\n-\n/, $_, 3;

    if ($in =~ s/\t(\d+)$//) {
	is (scalar DHexDump ($in, $1), $out,	"HexDump $desc");
	}
    else {
	is (scalar DHexDump ($in),     $out,	"HexDump $desc");
	}
    }

done_testing;

sub test_data
{
    return <<"EOTD";
Single 0
-
0
-
0000  30                                                0
##
Documentation example
-
abc\x{0a}de\x{20ac}fg
-
0000  61 62 63 0a 64 65 e2 82  ac 66 67                 abc.de...fg
##
Documentation example with length
-
abc\x{0a}de\x{20ac}fg	6
-
0000  61 62 63 0a 64 65                                 abc.de
##
Binary data
-
\x01Great wide open space\x02\x{20ac}\n
-
0000  01 47 72 65 61 74 20 77  69 64 65 20 6f 70 65 6e  .Great wide open
0010  20 73 70 61 63 65 02 e2  82 ac 0a                  space.....
##
EOTD
    } # test_data