Thank you.

I want to know what UTF8-flag-on string (SvUTF8(sv) is true)
is equivalent with "\xef\xb9\xbf",
but I would misunderstand usage of pack('U*', LIST).

Are numbers < 256 in LIST
Unicode code points or native ASCII/EBCDIC code points?

Here is a draft of tests 25..28.
I guess this should succeses if pack(U) would take Unicode code points,
but I might be still in the wrong.

### TESTS START
$utf8_fe7f_upgraded = ord("A") != 0x41
     ? pack('U*', 213, 190, 215)  # EBCDIC "\xef\xb9\xbf"
     : pack('U*', 239, 185, 191); # ASCII  "\xef\xb9\xbf"

$utf8_fe7f_bytes = pack('C*', 239, 185, 191);

print "\x{fe7f}" eq utf8_to_unicode($utf8_fe7f_upgraded)
   ? "ok" : "not ok", " 25\n";

print "\x{fe7f}" eq utf8_to_unicode($utf8_fe7f_bytes)
   ? "ok" : "not ok", " 26\n";

print  $utf8_fe7f_upgraded eq unicode_to_utf8("\x{fe7f}")
   ? "ok" : "not ok", " 27\n";

print  $utf8_fe7f_bytes    eq unicode_to_utf8("\x{fe7f}")
   ? "ok" : "not ok", " 28\n";
### TESTS END

And many thanks for discovering STRLEN-UV type mismatchings, too.

SADAHIRO Tomoyuki



>  >Thank you for your report.
>  >
>  >I was careless about the trap on a non-ASCII platform
>  >like that ("a" eq "\x61") is not true.
>  >
>  >So the failed tests are fixed, and some tests are added.
>  >Ver. 0.20 is available from there:
>  >
>  >[TAR-GZ, HTML-ized POD]
>  >http://homepage1.nifty.com/nomenclator/perl/Unicode-Transform-0.20.tar.gz
>  >http://homepage1.nifty.com/nomenclator/perl/Unicode-Transform.html
>  >
>  >SADAHIRO Tomoyuki
> 
> I have now run this latest version on z/OS with the following results:
> 
> /defects/brian/unicode/Unicode-Transform-0.20:>make test
> PERL_DL_NONLAZY=1 /defects/brian/nonthreaded/perl-5.8.0/perl 
> "-I/defects/brian/n
> onthreaded/perl-5.8.0/lib" "-I/defects/brian/nonthreaded/perl-5.8.0/lib" 
> "-MExtU
> tils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
> t/handler....ok
> t/test.......FAILED tests 25, 27
>         Failed 2/28 tests, 92.86% okay
> Failed Test Stat Wstat Total Fail  Failed  List of Failed
> -------------------------------------------------------------------------------
> t/test.t                            28    2    7.14%  25 27
> Failed 1/2 test scripts, 50.00% okay. 2/38 subtests failed, 94.74% okay.
> make: *** [test_dynamic] Error 121
> 
> I also had the warnings similar to the following when compiling on z/OS:
> 
> WARNING CCN3196 ./Transform.c:21    Initialization between types 
> "unsigned int(*)
> (unsigned char*,unsigned int,unsigned int*)" and "unsigned 
> long(*)(unsigned char*,unsigned int,unsigned int*)"
> is not allowed.
> FSUM3065 The COMPILE step ended with return code 4.
> 
> I got rid of these warnings by changing the return type all of the 
> ord_in_* functions to STRLEN instead of UV, in the file unitrans.h. I 
> choose this because the return type of the app_in_* functions were 
> already STRLEN and they didn't generate warnings.
> 
> Brian


Reply via email to