DATEV/CSV check_encoding, sollte wirklich das encoding checken
authorJan Büren <jan@kivitendo-premium.de>
Thu, 15 Mar 2018 20:40:10 +0000 (21:40 +0100)
committerJan Büren <jan@kivitendo-premium.de>
Thu, 15 Mar 2018 20:40:10 +0000 (21:40 +0100)
Entsprechend vier Testfälle für die Routine gesetzt und
 Hintergründe in #348 dokumentiert.

SL/DATEV/CSV.pm
t/datev/encoding.t [new file with mode: 0644]

index 69448c4..4e16475 100644 (file)
@@ -3,7 +3,7 @@ package SL::DATEV::CSV;
 use strict;
 use Carp;
 use DateTime;
-use Encode qw(decode);
+use Encode qw(encode);
 use Scalar::Util qw(looks_like_number);
 
 use SL::DB::Datev;
@@ -260,7 +260,7 @@ sub check_encoding {
   my ($test) = @_;
   return undef unless $test;
   if (eval {
-    decode('Windows-1252', $test, Encode::FB_CROAK|Encode::LEAVE_SRC);
+    encode('Windows-1252', $test, Encode::FB_CROAK|Encode::LEAVE_SRC);
     1
   }) {
     return 1;
diff --git a/t/datev/encoding.t b/t/datev/encoding.t
new file mode 100644 (file)
index 0000000..3c3369a
--- /dev/null
@@ -0,0 +1,23 @@
+use strict;
+use Test::More;
+
+use lib 't';
+
+use_ok 'Support::TestSetup';
+use SL::DATEV::CSV qw(check_text);
+use Support::TestSetup;
+
+use utf8;
+Support::TestSetup::login();
+
+my $ascii    = 'foobar 443334 hallo';
+my $german   = 'üßäüö €';
+my $croatia  = 'Kulašić hat viele €';
+my $armenian = 'Հայերեն  ֏';
+
+is 1,     SL::DATEV::CSV::check_encoding($ascii),    'ASCII Encoding';
+is 1,     SL::DATEV::CSV::check_encoding($german),   'German umlaut, euro and ligatur Encoding';
+is undef, SL::DATEV::CSV::check_encoding($croatia),  'croatia with euro Encoding';
+is undef, SL::DATEV::CSV::check_encoding($armenian), 'armenian Encoding';
+
+done_testing;