Blame t/whatwg-aliases.t

Packit d0f5c2
# This test checks aliases support based on the list in the
Packit d0f5c2
# WHATWG Encoding Living Standard
Packit d0f5c2
#
Packit d0f5c2
# https://encoding.spec.whatwg.org/
Packit d0f5c2
#
Packit d0f5c2
# The input of this test is the file whatwg-aliases.json downloaded from
Packit d0f5c2
# https://encoding.spec.whatwg.org/encodings.json
Packit d0f5c2
#
Packit d0f5c2
# To run:
Packit d0f5c2
#   AUTHOR_TESTING=1 prove -l t/whatwg-aliases.t
Packit d0f5c2
Packit d0f5c2
Packit d0f5c2
use Test::More
Packit d0f5c2
    ($ENV{AUTHOR_TESTING} || $ENV{RELEASE_TESTING})
Packit d0f5c2
    ? 'no_plan'
Packit d0f5c2
    : (skip_all => 'For maintainers only');
Packit d0f5c2
use Encode 'find_encoding';
Packit d0f5c2
use JSON::PP 'decode_json';
Packit d0f5c2
use File::Spec;
Packit d0f5c2
use FindBin;
Packit d0f5c2
Packit d0f5c2
my $encodings = decode_json(do {
Packit d0f5c2
    # https://encoding.spec.whatwg.org/encodings.json
Packit d0f5c2
    open my $f, '<', File::Spec->catdir($FindBin::Bin, 'whatwg-aliases.json');
Packit d0f5c2
    local $/;
Packit d0f5c2
    <$f>
Packit d0f5c2
});
Packit d0f5c2
Packit d0f5c2
my %IGNORE = map { $_ => '' } qw(
Packit d0f5c2
    replacement
Packit d0f5c2
    utf8
Packit d0f5c2
);
Packit d0f5c2
Packit d0f5c2
my %TODO = (
Packit d0f5c2
    'ISO-8859-8-I'   => 'Not supported',
Packit d0f5c2
    'gb18030'        => 'Not supported',
Packit d0f5c2
    '866'            => 'Not supported',
Packit d0f5c2
    'x-user-defined' => 'Not supported',
Packit d0f5c2
    # ...
Packit d0f5c2
);
Packit d0f5c2
Packit d0f5c2
for my $section (@$encodings) {
Packit d0f5c2
    for my $enc (@{$section->{encodings}}) {
Packit d0f5c2
Packit d0f5c2
	my $name = $enc->{name};
Packit d0f5c2
Packit d0f5c2
	next if exists $IGNORE{$name};
Packit d0f5c2
Packit d0f5c2
	local $TODO = $TODO{$name} if exists $TODO{$name};
Packit d0f5c2
Packit d0f5c2
	my $encoding = find_encoding($name);
Packit d0f5c2
	isa_ok($encoding, 'Encode::Encoding', $name);
Packit d0f5c2
Packit d0f5c2
	for my $label (@{$enc->{labels}}) {
Packit d0f5c2
	    local $TODO = $TODO{$label} if exists $TODO{$label};
Packit d0f5c2
Packit d0f5c2
	    my $e = find_encoding($label);
Packit d0f5c2
	    if (isa_ok($e, 'Encode::Encoding', $label)) {
Packit d0f5c2
		next if exists $IGNORE{$label};
Packit d0f5c2
		is($e->name, $encoding->name, "$label ->name is $name")
Packit d0f5c2
	    }
Packit d0f5c2
	}
Packit d0f5c2
    }
Packit d0f5c2
}
Packit d0f5c2
Packit d0f5c2
done_testing;