Text-CSV_XS
view release on metacpan or search on metacpan
t/80_diag.t view on Meta::CPAN
$csv->SetDiag (2012);
is ($csv->eof, 1, "EOF caused by 2012");
is (Text::CSV_XS->new ({ ecs_char => ":" }), undef, "Unsupported option");
{ my @warn;
local $SIG{__WARN__} = sub { push @warn => @_ };
Text::CSV_XS::error_diag ();
ok (@warn == 1, "Error_diag in void context ::");
like ($warn[0], qr{^# CSV_XS ERROR: 1000 - INI}, "error content");
}
{ my @warn;
local $SIG{__WARN__} = sub { push @warn => @_ };
Text::CSV_XS->error_diag ();
ok (@warn == 1, "Error_diag in void context ->");
like ($warn[0], qr{^# CSV_XS ERROR: 1000 - INI}, "error content");
}
{ my @warn;
local $SIG{__WARN__} = sub { push @warn => @_ };
is (Text::CSV_XS->new ({ auto_diag => 0, ecs_char => ":" }), undef,
"Unsupported option");
ok (@warn == 0, "Error_diag in from new ({ auto_diag => 0})");
}
{ my @warn;
local $SIG{__WARN__} = sub { push @warn => @_ };
is (Text::CSV_XS->new ({ auto_diag => 1, ecs_char => ":" }), undef,
"Unsupported option");
ok (@warn == 1, "Error_diag in from new ({ auto_diag => 1})");
like ($warn[0], qr{^# CSV_XS ERROR: 1000 - INI}, "error content");
}
is (Text::CSV_XS::error_diag (), "INI - Unknown attribute 'ecs_char'",
"Last failure for new () - FAIL");
is (Text::CSV_XS->error_diag (), "INI - Unknown attribute 'ecs_char'",
"Last failure for new () - FAIL");
is (Text::CSV_XS::error_diag (bless {}, "Foo"), "INI - Unknown attribute 'ecs_char'",
"Last failure for new () - FAIL");
$csv->SetDiag (1000);
is (0 + $csv->error_diag (), 1000, "Set error NUM");
is ( $csv->error_diag (), "INI - constructor failed","Set error STR");
$csv->SetDiag (0);
is (0 + $csv->error_diag (), 0, "Reset error NUM");
is ( $csv->error_diag (), "", "Reset error STR");
ok (1, "Test auto_diag");
$csv = Text::CSV_XS->new ({ auto_diag => 1 });
{ my @warn;
local $SIG{__WARN__} = sub { push @warn => @_ };
is ($csv->{_RECNO}, 0, "No records read yet");
is ($csv->parse ('"","'), 0, "1 - bad parse");
ok (@warn == 1, "1 - One error");
like ($warn[0], qr '^# CSV_XS ERROR: 2027 -', "1 - error message");
is ($csv->{_RECNO}, 1, "One record read");
}
{ my @warn;
local $SIG{__WARN__} = sub { push @warn => @_ };
is ($csv->diag_verbose (3), 3, "Set diag_verbose");
is ($csv->parse ('"","'), 0, "1 - bad parse");
ok (@warn == 1, "1 - One error");
@warn = split m/\n/ => $warn[0];
ok (@warn == 3, "1 - error plus two lines");
like ($warn[0], qr '^# CSV_XS ERROR: 2027 -', "1 - error message");
like ($warn[1], qr '^"","', "1 - input line");
like ($warn[2], qr '^ \^', "1 - position indicator");
is ($csv->{_RECNO}, 2, "Another record read");
}
{ ok ($csv->{auto_diag} = 2, "auto_diag = 2 to die");
eval { $csv->parse ('"","') };
like ($@, qr '^# CSV_XS ERROR: 2027 -', "2 - error message");
}
{ my @warn;
local $SIG{__WARN__} = sub { push @warn => @_ };
# Invalid error_input calls
is (Text::CSV_XS::error_input (undef), undef, "Bad error_input call");
is (Text::CSV_XS::error_input (""), undef, "Bad error_input call");
is (Text::CSV_XS::error_input ([]), undef, "Bad error_input call");
is (Text::CSV_XS->error_input, undef, "Bad error_input call");
ok (my $csv = Text::CSV_XS->new (), "new for cache diag");
$csv->_cache_diag ();
ok (@warn == 1, "Got warn");
is ($warn[0], "CACHE: invalid\n", "Uninitialized cache");
@warn = ();
ok ($csv->parse ("1"), "parse"); # initialize cache
$csv->_cache_set (987, 10);
ok (@warn == 1, "Got warn");
is ($warn[0], "Unknown cache index 987 ignored\n", "Ignore bad cache calls");
is ($csv->parse ('"'), 0, "Bad parse");
is ($csv->error_input, '"', "Error input");
ok ($csv->_cache_set (34, 0), "Reset error input (dangerous!)");
is ($csv->error_input, '"', "Error input not reset");
}
{ my $csv = Text::CSV_XS->new ();
ok ($csv->parse (q{1,"abc"}), "Valid parse");
is ($csv->error_input (), undef, "Undefined error_input");
is ($csv->{_ERROR_INPUT}, undef, "Undefined error_input");
}
foreach my $spec (
undef, # No spec at all
"", # No spec at all
"row=0", # row > 0
"col=0", # col > 0
"cell=0", # cell = r,c
"cell=0,0", # TL col > 0
"cell=1,0", # TL row > 0
"cell=1,1;0,1", # BR col > 0
"cell=1,1;1,0", # BR row > 0
"row=*", # * only after n-
"col=3-1", # to >= from
"cell=4,1;1", # cell has no ;
"cell=3,3-2,1", # bottom-right should be right to and below top-left
"cell=3,3-2,*", # bottom-right should be right to and below top-left
"cell=3,3-4,1", # bottom-right should be right to and below top-left
"cell=3,3-*,1", # bottom-right should be right to and below top-left
( run in 0.528 second using v1.01-cache-2.11-cpan-5511b514fd6 )