#!usr/bin/perl -w
# $Id: 31_master_key.t 189 2006-12-05 02:41:46Z fil $
use strict;
use Test::More ( tests=>9 );
use Data::Tabular::Dumper;
pass( 'loaded' );
my %params=( CSV=>["t/test-31-test.csv", {eol=>"\n", binary=>1}],
XML=>["t/test-31-test.xml", "catalog", "camera" ],
);
my $allowed=Data::Tabular::Dumper->available();
foreach my $t ( qw( CSV XML Excel ) ) {
delete $params{$t} unless $allowed->{$t};
}
my %tests = (
#########################
LoH => {
data=> [
{ camera=>"EOS 2000", price=>12000.00 },
{ camera=>"FinePix 1300", price=>150 },
],
CSV=>[
qq(camera,price\n),
qq("EOS 2000",12000\n),
qq("FinePix 1300",150\n)
],
XML=>[
qq(\n),
qq(\n),
qq( \n),
qq( EOS 2000\n),
qq( 12000\n),
qq( \n),
qq( \n),
qq( FinePix 1300\n),
qq( 150\n),
qq( \n),
qq(\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(\n),
qq(\n),
qq( \n),
qq( EOS2000\n),
qq( Canon\n),
qq( 12000\n),
qq( \n),
qq( \n),
qq( FinePix1300\n),
qq( Fuji\n),
qq( 150\n),
qq( \n),
qq(\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] );
}
}
}