xref: /openbsd-src/gnu/usr.bin/perl/cpan/Encode/t/decode.t (revision f3efcd0145415b7d44d9da97e0ad5c21b186ac61)
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