CSV-Reader
view release on metacpan or search on metacpan
t/broken_line.t view on Meta::CPAN
# Save this file in UTF-8 encoding!
use strict;
use warnings;
use utf8;
use Data::Dumper qw(Dumper); local $Data::Dumper::Terse = 1;
#use open ':std', ':encoding(utf8)';
use open OUT => ':locale'; # before Test::More because it duplicates STDOUT and STDERR
use Test::More qw(no_plan);
use Cwd ();
use File::Basename;
use lib (
File::Basename::dirname(Cwd::abs_path(__FILE__)) . '/../lib', # in build dir
File::Basename::dirname(Cwd::abs_path(__FILE__)) . '/../..' # in project dir with t subdir in same dir as .pm file
);
my $verbose = !$ENV{'HARNESS_ACTIVE'} && 0;
my $class = 'CSV::Reader';
require_ok($class) || BAIL_OUT("$class has errors");
my %default_options = (
#'delimiter' => ',',
#'enclosure' => '"',
'field_aliases' => {
'Postal Code' => 'postcode',
},
);
#my $csvfile = ($0 =~ s|[^/]+$||r) . 'broken_line.csv';
my $csvfile = $0; $csvfile =~ s|[^/]+$||; $csvfile .= 'broken_line.csv';
if ('test broken line') {
my $o = $class->new($csvfile, %default_options);
my @rows;
while (my $row = $o->nextRow()) {
push(@rows, $row);
}
my $expected = 3;
is(scalar(@rows), 3, 'File has expected data row count');
if (@rows) {
my $field = 'Address Code 2';
my $addr = $rows[0]->{$field};
ok(utf8::is_utf8($addr), "'$field' value is flagged as UTF-8");
is($addr, "Déjà vu\n straat", "UTF-8 encoding is OK after parsing and line feed is present");
}
}
unless($ENV{'HARNESS_ACTIVE'}) {
my $o = $class->new(
$csvfile,
%default_options,
#'debug' => 1
);
require Encode;
while (my $row = $o->nextRow()) {
diag(Dumper($row));
#diag($row->{'Address Code 2'});
#warn '# ' . $row->{'Address Code 2'} . "\n";
#print '# ' . $row->{'Address Code 2'} . "\n";
#diag('is_utf8: ' . int(Encode::is_utf8($row->{'Address Code 2'})));
#last;
}
}
( run in 0.534 second using v1.01-cache-2.11-cpan-ceb78f64989 )