#!/usr/bin/perl use strict; $^W = 1; use Test::More tests => 25; BEGIN { $ENV{PERL_TEXT_CSV} = 0; use_ok "Text::CSV", (); plan skip_all => "Cannot load Text::CSV" if $@; } $| = 1; my $csv = Text::CSV->new ({ types => [ Text::CSV::IV (), Text::CSV::PV (), Text::CSV::NV (), ], }); ok ($csv, "CSV_XS->new ()"); is (@{$csv->{types}}, 3, "->{types} as hash"); is ($csv->{types}[0], Text::CSV::IV (), "type IV"); is ($csv->{types}[1], Text::CSV::PV (), "type PV"); is ($csv->{types}[2], Text::CSV::NV (), "type NV"); is (ref ($csv->types), "ARRAY", "->types () as method"); is ($csv->types ()->[0], Text::CSV::IV (), "type IV"); is ($csv->types ()->[1], Text::CSV::PV (), "type PV"); is ($csv->types ()->[2], Text::CSV::NV (), "type NV"); is (length $csv->{_types}, 3, "->{_types}"); my $inp = join "", map { chr $_ } Text::CSV::IV (), Text::CSV::PV (), Text::CSV::NV (); # should be "\001\000\002" is ($csv->{_types}, $inp, "IV PV NV"); ok ($csv->parse ("2.55,CSFDATVM01,3.77"), "parse ()"); my @fields = $csv->fields (); is ($fields[0], "2", "Field 1"); is ($fields[1], "CSFDATVM01", "Field 2"); is ($fields[2], "3.77", "Field 3"); ok ($csv->combine ("", "", "1.00"), "combine ()"); is ($csv->string, ',,1.00', "string"); my $warning; $SIG{__WARN__} = sub { $warning = shift }; ok ($csv->parse ($csv->string ()), "parse (combine ())"); like ($warning, qr/numeric/, "numeric warning"); @fields = $csv->fields (); is ($fields[0], "0", "Field 1"); is ($fields[1], "", "Field 2"); is ($fields[2], "1", "Field 3"); is ($csv->types (0), undef, "delete types"); is ($csv->types, undef, "types gone");