The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use lib 't';
use Test::More 'no_plan';
use Encode;
use Encode::JP::Emoji;
require "test-util.pl";

sub read_scsv {
    my $file = shift;
    my $table = [];
    open(SCSV, $file) or die "$! - $file\n";
    while(<SCSV>) {
        next if /^#/;
        s/\s+$//s;
        push @$table, $_;
    }
    close(SCSV);
    $table;
}

my $table = read_scsv('t/EmojiSources.txt');
    
for my $line (@$table) {
    my($standardH, $docomoH, $kddiwebH, $softbankH) = split(/;/, $line);
    next unless $standardH;

    my $standardU = encode 'utf8' => join '' => map {chr hex $_} split(/\s+/, $standardH);
    my $standardS = decode 'x-utf8-e4u-unicode' => $standardU;
    my $standardR = encode 'x-utf8-e4u-unicode' => $standardS;
    SKIP: {
        skip "U+$standardH (Google U+FEB64)" => 1 if ($standardS eq "\x{FEB64}");
        is(ohex($standardR), ohex($standardU), "$standardH standard round-trip");
    }

    if ($docomoH) {
        my $docomoS = decode 'x-sjis-e4u-docomo' => pack 'H*' => $docomoH;
        my $docomoR = uc unpack 'H*' => encode 'x-sjis-e4u-docomo' => $standardS;
        is(shex($standardS), shex($docomoS), "$standardH docomo decode ($docomoH)");
        is($docomoR, $docomoH, "$standardH docomo docomo ($docomoH)");
    }
    if ($kddiwebH) {
        my $kddiwebS = decode 'x-sjis-e4u-kddiweb' => pack 'H*' => $kddiwebH;
        my $kddiwebR = uc unpack 'H*' => encode 'x-sjis-e4u-kddiweb' => $standardS;
        is(shex($standardS), shex($kddiwebS), "$standardH kddiweb decode ($kddiwebH)");
        is($kddiwebR, $kddiwebH, "$standardH kddiweb encode ($kddiwebH)");
    }
    if ($softbankH) {
        my $softbankS = decode 'x-sjis-e4u-softbank3g' => pack 'H*' => $softbankH;
        my $softbankR = uc unpack 'H*' => encode 'x-sjis-e4u-softbank3g' => $standardS;
        is(shex($standardS), shex($softbankS), "$standardH softbank decode ($softbankH)");
        is($softbankR, $softbankH, "$standardH softbank encode ($softbankH)");
    }
}