1*de8cc8edSafresh1BEGIN {
2*de8cc8edSafresh1	require Config;
3*de8cc8edSafresh1	if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){
4*de8cc8edSafresh1	    print "1..0 # Skip -- Perl configured without List::Util module\n";
5*de8cc8edSafresh1	    exit 0;
6*de8cc8edSafresh1	}
7*de8cc8edSafresh1
8*de8cc8edSafresh1	# `make test` in the CPAN version of this module runs us with -w, but
9*de8cc8edSafresh1	# Dumpvalue.pm relies on all sorts of things that can cause warnings. I
10*de8cc8edSafresh1	# don't think that's worth fixing, so we just turn off all warnings
11*de8cc8edSafresh1	# during testing.
12*de8cc8edSafresh1	$^W = 0;
13*de8cc8edSafresh1}
14*de8cc8edSafresh1
15*de8cc8edSafresh1use lib ("./t/lib");
16*de8cc8edSafresh1use TieOut;
17*de8cc8edSafresh1use Test::More tests => 17;
18*de8cc8edSafresh1
19*de8cc8edSafresh1use_ok( 'Dumpvalue' );
20*de8cc8edSafresh1
21*de8cc8edSafresh1my $d;
22*de8cc8edSafresh1ok( $d = Dumpvalue->new(), 'create a new Dumpvalue object' );
23*de8cc8edSafresh1
24*de8cc8edSafresh1my $out = tie *OUT, 'TieOut';
25*de8cc8edSafresh1select(OUT);
26*de8cc8edSafresh1
27*de8cc8edSafresh1my (@foobar, $x, $y);
28*de8cc8edSafresh1
29*de8cc8edSafresh1@foobar = ('foo', 'bar');
30*de8cc8edSafresh1$d->dumpValue([@foobar]);
31*de8cc8edSafresh1$x = $out->read;
32*de8cc8edSafresh1is( $x, "0  'foo'\n1  'bar'\n", 'dumpValue worked on array ref' );
33*de8cc8edSafresh1$d->dumpValues(@foobar);
34*de8cc8edSafresh1$y = $out->read;
35*de8cc8edSafresh1is( $y, "0  'foo'\n1  'bar'\n", 'dumpValues worked on array' );
36*de8cc8edSafresh1is( $y, $x,
37*de8cc8edSafresh1    "dumpValues called on array returns same as dumpValue on array ref");
38*de8cc8edSafresh1
39*de8cc8edSafresh1@foobar = (undef, 'bar');
40*de8cc8edSafresh1$d->dumpValue([@foobar]);
41*de8cc8edSafresh1$x = $out->read;
42*de8cc8edSafresh1is( $x, "0  empty slot\n1  'bar'\n",
43*de8cc8edSafresh1    'dumpValue worked on array ref, first element undefined' );
44*de8cc8edSafresh1$d->dumpValues(@foobar);
45*de8cc8edSafresh1$y = $out->read;
46*de8cc8edSafresh1is( $y, "0  empty slot\n1  'bar'\n",
47*de8cc8edSafresh1    'dumpValues worked on array, first element undefined' );
48*de8cc8edSafresh1is( $y, $x,
49*de8cc8edSafresh1    "dumpValues called on array returns same as dumpValue on array ref, first element undefined");
50*de8cc8edSafresh1
51*de8cc8edSafresh1@foobar = ('bar', undef);
52*de8cc8edSafresh1$d->dumpValue([@foobar]);
53*de8cc8edSafresh1$x = $out->read;
54*de8cc8edSafresh1is( $x, "0  'bar'\n1  empty slot\n",
55*de8cc8edSafresh1    'dumpValue worked on array ref, last element undefined' );
56*de8cc8edSafresh1$d->dumpValues(@foobar);
57*de8cc8edSafresh1$y = $out->read;
58*de8cc8edSafresh1is( $y, "0  'bar'\n1  empty slot\n",
59*de8cc8edSafresh1    'dumpValues worked on array, last element undefined' );
60*de8cc8edSafresh1is( $y, $x,
61*de8cc8edSafresh1    "dumpValues called on array returns same as dumpValue on array ref, last element undefined");
62*de8cc8edSafresh1
63*de8cc8edSafresh1@foobar = ('', 'bar');
64*de8cc8edSafresh1$d->dumpValue([@foobar]);
65*de8cc8edSafresh1$x = $out->read;
66*de8cc8edSafresh1is( $x, "0  ''\n1  'bar'\n",
67*de8cc8edSafresh1    'dumpValue worked on array ref, first element empty string' );
68*de8cc8edSafresh1$d->dumpValues(@foobar);
69*de8cc8edSafresh1$y = $out->read;
70*de8cc8edSafresh1is( $y, "0  ''\n1  'bar'\n",
71*de8cc8edSafresh1    'dumpValues worked on array, first element empty string' );
72*de8cc8edSafresh1is( $y, $x,
73*de8cc8edSafresh1    "dumpValues called on array returns same as dumpValue on array ref, first element empty string");
74*de8cc8edSafresh1
75*de8cc8edSafresh1@foobar = ('bar', '');
76*de8cc8edSafresh1$d->dumpValue([@foobar]);
77*de8cc8edSafresh1$x = $out->read;
78*de8cc8edSafresh1is( $x, "0  'bar'\n1  ''\n",
79*de8cc8edSafresh1    'dumpValue worked on array ref, last element empty string' );
80*de8cc8edSafresh1$d->dumpValues(@foobar);
81*de8cc8edSafresh1$y = $out->read;
82*de8cc8edSafresh1is( $y, "0  'bar'\n1  ''\n",
83*de8cc8edSafresh1    'dumpValues worked on array, last element empty string' );
84*de8cc8edSafresh1is( $y, $x,
85*de8cc8edSafresh1    "dumpValues called on array returns same as dumpValue on array ref, last element empty string");
86*de8cc8edSafresh1
87