#!perl
use strict;
use warnings;
use Test::More;
use Test::Exception;
use Tripletail '/dev/null';

eval {
    require Text::CSV_XS;
};
if ($@) {
    plan skip_all => 'Text::CSV_XS is required for these tests';
}
else {
    plan tests => 15;
}

my $csv;
lives_ok {
    $csv = $TL->getCsv();
} 'getCsv';

my $p;
ok($p = $csv->parseCsv(\*DATA), 'parseCsv (fh)');
is_deeply($p->next, ['a,b', 'c"d', "e\nf"], 'next [0]');
is_deeply($p->next, [qw(1 2 3 4 5)], 'next [1]');
is_deeply($p->next, ['a,b', 'cd\\'], 'next [2]');
is($p->next, undef, 'next[3]');

ok($p = $csv->parseCsv('a,b,c'), 'parseCsv (scalar)');
is_deeply($p->next, [qw(a b c)], 'next [0]');
is($p->next, undef, 'next[1]');

ok($p = $csv->parseCsv('a",b,c'), 'parseCsv (error)');
dies_ok {
    $p->next;
} 'next [error]';

dies_ok {$csv->makeCsv(\123)} 'makeCsv die';
is($csv->makeCsv([]), "", 'makeCsv [0]');
is($csv->makeCsv([1, 2, 3]), "1,2,3", 'makeCsv [1]');
is($csv->makeCsv(
    ['a,b', 'c"d', "e\nf"]),
   qq{"a,b","c""d","e\nf"}, 'makeCsv [2]');

__END__
"a,b","c""d","e
f"
1,2,3,4,5
"a,b","cd\"