use strict; use warnings; use Test::More; use Date::Language; # RT#113419 / GH#19: Language modules must return Unicode strings (UTF-8 flagged), # not raw byte strings in legacy encodings. # # Legacy encoding modules (Chinese_GB, Russian, Russian_koi8r, Russian_cp1251) # intentionally return byte strings and are excluded from this check. my @unicode_langs = qw( Afar Amharic Arabic Austrian Brazilian Bulgarian Chinese Czech Danish Dutch English Finnish French Gedeo German Greek Hungarian Icelandic Italian Norwegian Occitan Oromo Romanian Sidama Somali Spanish Swedish Tigrinya TigrinyaEritrean TigrinyaEthiopian Turkish ); # Tue Sep 7 13:02:42 1999 GMT my $time = 936709362; for my $lang (@unicode_langs) { my $l = Date::Language->new($lang); for my $fmt (qw(%A %a %B %b)) { my $str = $l->time2str($fmt, $time, 'GMT'); # Pure-ASCII strings don't get the UTF-8 flag; skip them. next unless $str =~ /[^\x00-\x7f]/; ok( utf8::is_utf8($str), "$lang $fmt: non-ASCII result has UTF-8 flag set" ); } } done_testing;