1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
BEGIN {
if ($] < 5.008001) {
plan skip_all => "This test unit requires perl-5.8.1 or higher";
}
else {
plan tests => 32;
}
use_ok "Text::CSV_XS", "csv";
require "./t/util.pl";
}
my $tfn = "_68test.csv"; END { unlink $tfn, "_$tfn"; }
my @dta = (
[qw( foo bar zap )],
[qw( mars venus pluto )],
[qw( 1 2 3 )],
);
my @dth = (
{ foo => "mars", bar => "venus", zap => "pluto" },
{ foo => 1, bar => 2, zap => 3 },
);
{ open my $fh, ">", $tfn or die "$tfn: $!\n";
local $" = ",";
print $fh "@$_\n" for @dta;
close $fh;
}
is_deeply (csv (in => $tfn), \@dta, "csv ()");
is_deeply (csv (in => $tfn, bom => 1), \@dth, "csv (bom)");
is_deeply (csv (in => $tfn, headers => "auto"), \@dth, "csv (headers)");
is_deeply (csv (in => $tfn, bom => 1, headers => "auto"), \@dth, "csv (bom, headers)");
foreach my $arg ("", "bom", "auto", "bom, auto") {
open my $fh, "<", $tfn or die "$tfn: $!\n";
my %attr;
$arg =~ m/bom/ and $attr{bom} = 1;
$arg =~ m/auto/ and $attr{headers} = "auto";
ok (my $csv = Text::CSV_XS->new (), "New ($arg)");
is ($csv->record_number, 0, "start");
if ($arg) {
is_deeply ([ $csv->header ($fh, \%attr) ], $dta[0], "Header") if $arg;
is ($csv->record_number, 1, "first data-record");
is_deeply ($csv->getline_hr ($fh), $dth[$_], "getline $_") for 0..$#dth;
}
else {
is_deeply ($csv->getline ($fh), $dta[$_], "getline $_") for 0..$#dta;
}
is ($csv->record_number, 3, "done");
close $fh;
}
done_testing;
|