|
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;
|