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

BEGIN {
    if ($ENV{PERL_CORE}){
        require Config; import Config;
        no warnings 'once';
        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
            print "1..0 # Skip: Data::Dumper was not built\n";
            exit 0;
        }
    }
}

use strict;
use Data::Dumper;
use Test::More tests => 4;

my ($a, $b, $obj);
my (@values, @names);
my (@newvalues, $objagain, %newvalues);
$a = 'alpha';
$b = 'beta';

$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
@values = $obj->Values;
is_deeply(\@values, [$a,$b], "Values() returned expected list");

@newvalues = ( qw| gamma delta epsilon | );
$objagain = $obj->Values(\@newvalues);
is($objagain, $obj, "Values returned same object");
is_deeply($objagain->{todump}, \@newvalues,
    "Able to use Values() to set values to be dumped");

$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
%newvalues = ( gamma => 'delta', epsilon => 'zeta' );
eval { @values = $obj->Values(\%newvalues); };
like($@, qr/Argument to Values, if provided, must be array ref/,
    "Got expected error message: bad argument to Values()");