@ -3,15 +3,16 @@
use strict ;
use warnings ;
use Test::More tests = > 25 ;
use Test::More tests = > 32 ;
use Test::Warn ;
BEGIN {
diag "
This test demonstrates why Koha uses the CSV parser and configration it does .
Specifically , the test is for Unicode compliance in text parsing and data .
This test requires other modules that Koha doesn ' t actually use , in order to compare .
Therefore , running this test is not necessary to test your Koha installation .
" ;
diag q{
This test demonstrates why Koha uses the CSV parser and configration
it does . Specifically , the test is for Unicode compliance in text
parsing and data . This test requires other modules that Koha doesn ' t
actually use , in order to compare . Therefore , running this test is not
necessary to test your Koha installation .
} ;
use FindBin ;
use lib $ FindBin:: Bin ;
use_ok ( 'Text::CSV' ) ;
@ -42,7 +43,9 @@ my $lines = [
] ;
# 010D: č LATIN SMALL LETTER C WITH CARON
# 0117: ė LATIN SMALL LETTER E WITH DOT ABOVE
diag sprintf "Testing %d lines with %d parsers." , scalar ( @$ lines ) , scalar ( keys % parsers ) ;
ok ( scalar ( keys % parsers ) > 0 && scalar ( @$ lines ) > 0 ,
sprintf "Testing %d lines with %d parsers." ,
scalar ( @$ lines ) , scalar ( keys % parsers ) ) ;
foreach my $ key ( sort keys % parsers ) {
my $ parser = $ parsers { $ key } ;
print "Testing parser $key version " . ( $ parser - > version || '?' ) . "\n" ;
@ -54,15 +57,31 @@ LINE: foreach (@$lines) {
foreach my $ key ( sort keys % parsers ) {
my $ parser = $ parsers { $ key } ;
my ( $ status , $ count , @ fields ) ;
ok ( $ status = $ parser - > parse ( $ _ - > { line } ) , "parse ($key)" ) ;
$ status = $ parser - > parse ( $ _ - > { line } ) ;
if ( $ status ) {
ok ( $ status , "parse ($key)" ) ;
@ fields = $ parser - > fields ;
ok ( ( $ count = scalar ( @ fields ) ) == 6 , "Number of fields ($count of 6)" ) ;
my $ j = 0 ;
foreach my $ f ( @ fields ) {
print "\t field " . + + $ j . ": $f\n" ;
+ + $ j ;
if ( $ j == 4 ) {
if ( $ key ne 'Text::CSV::Unicode (binary)' ) {
warning_like {
print "\t field " . $ j . ": $f\n"
} [ qr/Wide character in print/ ] , 'Expected wide print' ;
} else {
print "\t field " . $ j . ": $f\n"
}
}
else {
print "\t field " . $ j . ": $f\n" ;
}
}
}
else {
ok ( ! $ status , "parse ($key) fails as expected" ) ;
}
}
}
diag "done.\n" ;
done_testing ( ) ;