16fb12b70Safresh1# 2*f3efcd01Safresh1# $Id: decode.t,v 1.5 2019/01/31 04:26:40 dankogai Exp $ 36fb12b70Safresh1# 46fb12b70Safresh1use strict; 55759b3d2Safresh1use Encode qw(decode_utf8 FB_CROAK find_encoding decode); 65759b3d2Safresh1use Test::More tests => 17; 75759b3d2Safresh1use Test::Builder; 86fb12b70Safresh1 96fb12b70Safresh1sub croak_ok(&) { 105759b3d2Safresh1 local $Test::Builder::Level = $Test::Builder::Level + 1; 116fb12b70Safresh1 my $code = shift; 126fb12b70Safresh1 eval { $code->() }; 136fb12b70Safresh1 like $@, qr/does not map/; 146fb12b70Safresh1} 156fb12b70Safresh1 166fb12b70Safresh1my $bytes = "L\x{e9}on"; 176fb12b70Safresh1my $pad = "\x{30C9}"; 186fb12b70Safresh1 196fb12b70Safresh1my $orig = $bytes; 206fb12b70Safresh1croak_ok { Encode::decode_utf8($orig, FB_CROAK) }; 216fb12b70Safresh1 226fb12b70Safresh1my $orig2 = $bytes; 236fb12b70Safresh1croak_ok { Encode::decode('utf-8', $orig2, FB_CROAK) }; 246fb12b70Safresh1 256fb12b70Safresh1chop(my $new = $bytes . $pad); 266fb12b70Safresh1croak_ok { Encode::decode_utf8($new, FB_CROAK) }; 276fb12b70Safresh1 285759b3d2Safresh1my $latin1 = find_encoding('latin1'); 295759b3d2Safresh1$orig = "\N{U+0080}"; 305759b3d2Safresh1$orig =~ /(.)/; 315759b3d2Safresh1is($latin1->decode($1), $orig, '[cpan #115168] passing magic regex globals to decode'); 325759b3d2Safresh1SKIP: { 335759b3d2Safresh1 skip "Perl Version ($]) is older than v5.16", 1 if $] < 5.016; 345759b3d2Safresh1 *a = $orig; 355759b3d2Safresh1 is($latin1->decode(*a), '*main::'.$orig, '[cpan #115168] passing typeglobs to decode'); 365759b3d2Safresh1} 375759b3d2Safresh1 385759b3d2Safresh1$orig = "\x80"; 395759b3d2Safresh1$orig =~ /(.)/; 405759b3d2Safresh1is($latin1->decode($1), "\N{U+0080}", 'passing magic regex to latin1 decode'); 415759b3d2Safresh1 425759b3d2Safresh1$orig = "\x80"; 435759b3d2Safresh1*a = $orig; 445759b3d2Safresh1is($latin1->decode(*a), "*main::\N{U+0080}", 'passing typeglob to latin1 decode'); 455759b3d2Safresh1 465759b3d2Safresh1$orig = "\N{U+0080}"; 475759b3d2Safresh1$orig =~ /(.)/; 485759b3d2Safresh1is($latin1->encode($1), "\x80", 'passing magic regex to latin1 encode'); 495759b3d2Safresh1 505759b3d2Safresh1$orig = "\xC3\x80"; 515759b3d2Safresh1$orig =~ /(..)/; 525759b3d2Safresh1is(Encode::decode_utf8($1), "\N{U+C0}", 'passing magic regex to Encode::decode_utf8'); 535759b3d2Safresh1 54*f3efcd01Safresh1SKIP: { 55*f3efcd01Safresh1 skip "Perl Version ($]) is older than v5.27.1", 1 if $] < 5.027001; 565759b3d2Safresh1 $orig = "\xC3\x80"; 575759b3d2Safresh1 *a = $orig; 585759b3d2Safresh1 is(Encode::decode_utf8(*a), "*main::\N{U+C0}", 'passing typeglob to Encode::decode_utf8'); 59*f3efcd01Safresh1} 605759b3d2Safresh1 615759b3d2Safresh1$orig = "\N{U+C0}"; 625759b3d2Safresh1$orig =~ /(.)/; 635759b3d2Safresh1is(Encode::encode_utf8($1), "\xC3\x80", 'passing magic regex to Encode::encode_utf8'); 645759b3d2Safresh1 655759b3d2Safresh1$orig = "\xC3\x80"; 665759b3d2Safresh1$orig =~ /(..)/; 675759b3d2Safresh1is(Encode::decode('utf-8', $1), "\N{U+C0}", 'passing magic regex to UTF-8 decode'); 685759b3d2Safresh1 695759b3d2Safresh1$orig = "\xC3\x80"; 705759b3d2Safresh1*a = $orig; 715759b3d2Safresh1is(Encode::decode('utf-8', *a), "*main::\N{U+C0}", 'passing typeglob to UTF-8 decode'); 725759b3d2Safresh1 735759b3d2Safresh1$orig = "\N{U+C0}"; 745759b3d2Safresh1$orig =~ /(.)/; 755759b3d2Safresh1is(Encode::encode('utf-8', $1), "\xC3\x80", 'passing magic regex to UTF-8 encode'); 765759b3d2Safresh1 775759b3d2Safresh1SKIP: { 785759b3d2Safresh1 skip "Perl Version ($]) is older than v5.16", 3 if $] < 5.016; 795759b3d2Safresh1 805759b3d2Safresh1 $orig = "\N{U+0080}"; 815759b3d2Safresh1 *a = $orig; 825759b3d2Safresh1 is($latin1->encode(*a), "*main::\x80", 'passing typeglob to latin1 encode'); 835759b3d2Safresh1 845759b3d2Safresh1 $orig = "\N{U+C0}"; 855759b3d2Safresh1 *a = $orig; 865759b3d2Safresh1 is(Encode::encode_utf8(*a), "*main::\xC3\x80", 'passing typeglob to Encode::encode_utf8'); 875759b3d2Safresh1 885759b3d2Safresh1 $orig = "\N{U+C0}"; 895759b3d2Safresh1 *a = $orig; 905759b3d2Safresh1 is(Encode::encode('utf-8', *a), "*main::\xC3\x80", 'passing typeglob to UTF-8 encode'); 915759b3d2Safresh1} 92