Data-Tabular-Dumper
view release on metacpan or search on metacpan
t/31_master_key.t view on Meta::CPAN
qq(</catalog>\n),
],
},
##########################
HoH => {
data => {
EOS2000 => { mfg =>'Canon', price=>12000 },
FinePix1300 => { mfg =>'Fuji', price=>150 }
},
CSV => [
qq(SKU,mfg,price\n),
qq(EOS2000,Canon,12000\n),
qq(FinePix1300,Fuji,150\n),
],
XML=>[
qq(<?xml version="1.0" encoding="iso-8859-1"?>\n),
qq(<catalog>\n),
qq( <camera>\n),
qq( <SKU>EOS2000</SKU>\n),
qq( <mfg>Canon</mfg>\n),
qq( <price>12000</price>\n),
qq( </camera>\n),
qq( <camera>\n),
qq( <SKU>FinePix1300</SKU>\n),
qq( <mfg>Fuji</mfg>\n),
qq( <price>150</price>\n),
qq( </camera>\n),
qq(</catalog>\n),
]
}
);
##################################################################
foreach my $name ( sort keys %tests ) {
my $test = $tests{$name};
foreach my $p ( values %params ) {
next unless ref $p;
$p->[0] =~ s/31-\w+/31-$name/;
}
# diag( $name );
my $dumper = Data::Tabular::Dumper->open( %params, master_key=>'SKU' );
$dumper->dump( $test->{data} );
$dumper->close;
foreach my $t ( qw( CSV XML ) ) {
SKIP: {
skip "$t support not installed", 2
unless $params{$t};
ok( (-f $params{$t}[0]), "Created $name ($t)" );
if( $t eq 'Excel' ) {
unlink( $params{ $t }[0] );
skip "Can't verify $t files", 1;
}
my @content = eval {
local @ARGV = ( $params{$t}[0] );
<>;
};
die $@ if $@;
is_deeply( \@content, $test->{$t}, "OK" )
or die "$params{$t}[0]";
unlink( $params{$t}[0] );
}
}
}
( run in 1.232 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )