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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 128;
use Text::CSV_XS;
my @pat = (
"00",
"\00",
"0\0",
"\0\0",
"0\n0",
"\0\n0",
"0\n\0",
"\0\n\0",
"\"0\n0",
"\"\0\n0",
"\"0\n\0",
"\"\0\n\0",
"\"0\n\"0",
"\"\0\n\"0",
"\"0\n\"\0",
"\"\0\n\"\0",
"0\n0",
"\0\n0",
"0\n\0",
"\0\n\0",
);
my %exp = map {
my $x = $_;
$x =~ s/\0/\\0/g;
$x =~ s/\n/\\n/g;
($_ => $x);
} @pat;
my $line = ["", undef, "0\n", "", "\0\0\n0"];
my $tfn = "_41test.csv"; END { -f $tfn and unlink $tfn; }
my $csv = Text::CSV_XS->new ({
eol => "\n",
binary => 1,
auto_diag => 1,
blank_is_undef => 1,
});
ok ($csv->combine (@$line), "combine [ ... ]");
is ($csv->string, qq{,,"0\n",,""0"0\n0"\n}, "string");
open my $fh, ">", $tfn or die "$tfn: $!\n";
binmode $fh;
ok ($csv->print ($fh, [ $_ ]), "print $exp{$_}") for @pat;
$csv->always_quote (1);
ok ($csv->print ($fh, $line), "print [ ... ]");
close $fh;
open $fh, "<", $tfn or die "$tfn: $!\n";
binmode $fh;
foreach my $pat (@pat) {
ok (my $row = $csv->getline ($fh), "getline $exp{$pat}");
is ($row->[0], $pat, "data $exp{$pat}");
}
is_deeply ($csv->getline ($fh), $line, "read [ ... ]");
close $fh;
unlink $tfn;
$csv = Text::CSV_XS->new ({
eol => "\n",
binary => 1,
auto_diag => 1,
blank_is_undef => 1,
quote_null => 0,
});
ok ($csv->combine (@$line), "combine [ ... ]");
is ($csv->string, qq{,,"0\n",,"\0\0\n0"\n}, "string");
open $fh, ">", $tfn or die "$tfn: $!\n";
binmode $fh;
for (@pat) {
ok ($csv->print ($fh, [ $_ ]), "print $exp{$_}");
}
$csv->always_quote (1);
ok ($csv->print ($fh, $line), "print [ ... ]");
close $fh;
open $fh, "<", $tfn or die "$tfn: $!\n";
binmode $fh;
foreach my $pat (@pat) {
ok (my $row = $csv->getline ($fh), "getline $exp{$pat}");
is ($row->[0], $pat, "data $exp{$pat}");
}
is_deeply ($csv->getline ($fh), $line, "read [ ... ]");
close $fh;
|