Blame t/decode.t

Packit d0f5c2
#
Packit d0f5c2
# $Id: decode.t,v 1.4 2017/10/06 22:21:53 dankogai Exp $
Packit d0f5c2
#
Packit d0f5c2
use strict;
Packit d0f5c2
use Encode qw(decode_utf8 FB_CROAK find_encoding decode);
Packit d0f5c2
use Test::More tests => 17;
Packit d0f5c2
use Test::Builder;
Packit d0f5c2
Packit d0f5c2
sub croak_ok(&) {
Packit d0f5c2
    local $Test::Builder::Level = $Test::Builder::Level + 1;
Packit d0f5c2
    my $code = shift;
Packit d0f5c2
    eval { $code->() };
Packit d0f5c2
    like $@, qr/does not map/;
Packit d0f5c2
}
Packit d0f5c2
Packit d0f5c2
my $bytes = "L\x{e9}on";
Packit d0f5c2
my $pad = "\x{30C9}";
Packit d0f5c2
Packit d0f5c2
my $orig = $bytes;
Packit d0f5c2
croak_ok { Encode::decode_utf8($orig, FB_CROAK) };
Packit d0f5c2
Packit d0f5c2
my $orig2 = $bytes;
Packit d0f5c2
croak_ok { Encode::decode('utf-8', $orig2, FB_CROAK) };
Packit d0f5c2
Packit d0f5c2
chop(my $new = $bytes . $pad);
Packit d0f5c2
croak_ok { Encode::decode_utf8($new, FB_CROAK) };
Packit d0f5c2
Packit d0f5c2
my $latin1 = find_encoding('latin1');
Packit d0f5c2
$orig = "\N{U+0080}";
Packit d0f5c2
$orig =~ /(.)/;
Packit d0f5c2
is($latin1->decode($1), $orig, '[cpan #115168] passing magic regex globals to decode');
Packit d0f5c2
SKIP: {
Packit d0f5c2
    skip "Perl Version ($]) is older than v5.16", 1 if $] < 5.016;
Packit d0f5c2
    *a = $orig;
Packit d0f5c2
    is($latin1->decode(*a), '*main::'.$orig, '[cpan #115168] passing typeglobs to decode');
Packit d0f5c2
}
Packit d0f5c2
Packit d0f5c2
$orig = "\x80";
Packit d0f5c2
$orig =~ /(.)/;
Packit d0f5c2
is($latin1->decode($1), "\N{U+0080}", 'passing magic regex to latin1 decode');
Packit d0f5c2
Packit d0f5c2
$orig = "\x80";
Packit d0f5c2
*a = $orig;
Packit d0f5c2
is($latin1->decode(*a), "*main::\N{U+0080}", 'passing typeglob to latin1 decode');
Packit d0f5c2
Packit d0f5c2
$orig = "\N{U+0080}";
Packit d0f5c2
$orig =~ /(.)/;
Packit d0f5c2
is($latin1->encode($1), "\x80", 'passing magic regex to latin1 encode');
Packit d0f5c2
Packit d0f5c2
$orig = "\xC3\x80";
Packit d0f5c2
$orig =~ /(..)/;
Packit d0f5c2
is(Encode::decode_utf8($1), "\N{U+C0}", 'passing magic regex to Encode::decode_utf8');
Packit d0f5c2
Packit d0f5c2
$orig = "\xC3\x80";
Packit d0f5c2
*a = $orig;
Packit d0f5c2
is(Encode::decode_utf8(*a), "*main::\N{U+C0}", 'passing typeglob to Encode::decode_utf8');
Packit d0f5c2
Packit d0f5c2
$orig = "\N{U+C0}";
Packit d0f5c2
$orig =~ /(.)/;
Packit d0f5c2
is(Encode::encode_utf8($1), "\xC3\x80", 'passing magic regex to Encode::encode_utf8');
Packit d0f5c2
Packit d0f5c2
$orig = "\xC3\x80";
Packit d0f5c2
$orig =~ /(..)/;
Packit d0f5c2
is(Encode::decode('utf-8', $1), "\N{U+C0}", 'passing magic regex to UTF-8 decode');
Packit d0f5c2
Packit d0f5c2
$orig = "\xC3\x80";
Packit d0f5c2
*a = $orig;
Packit d0f5c2
is(Encode::decode('utf-8', *a), "*main::\N{U+C0}", 'passing typeglob to UTF-8 decode');
Packit d0f5c2
Packit d0f5c2
$orig = "\N{U+C0}";
Packit d0f5c2
$orig =~ /(.)/;
Packit d0f5c2
is(Encode::encode('utf-8', $1), "\xC3\x80", 'passing magic regex to UTF-8 encode');
Packit d0f5c2
Packit d0f5c2
SKIP: {
Packit d0f5c2
    skip "Perl Version ($]) is older than v5.16", 3 if $] < 5.016;
Packit d0f5c2
Packit d0f5c2
    $orig = "\N{U+0080}";
Packit d0f5c2
    *a = $orig;
Packit d0f5c2
    is($latin1->encode(*a), "*main::\x80", 'passing typeglob to latin1 encode');
Packit d0f5c2
Packit d0f5c2
    $orig = "\N{U+C0}";
Packit d0f5c2
    *a = $orig;
Packit d0f5c2
    is(Encode::encode_utf8(*a), "*main::\xC3\x80", 'passing typeglob to Encode::encode_utf8');
Packit d0f5c2
Packit d0f5c2
    $orig = "\N{U+C0}";
Packit d0f5c2
    *a = $orig;
Packit d0f5c2
    is(Encode::encode('utf-8', *a), "*main::\xC3\x80", 'passing typeglob to UTF-8 encode');
Packit d0f5c2
}