File: 41_null.t

package info (click to toggle)
libtext-csv-xs-perl 1.61-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,376 kB
  • sloc: perl: 8,771; makefile: 9
file content (112 lines) | stat: -rw-r--r-- 2,032 bytes parent folder | download | duplicates (6)
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;