The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# enco.t - tests for "preferred ENCO name" functionality of I18N::Charset

# $Id: enco.t,v 1.5 2005-11-12 14:45:08 Daddy Exp $

use ExtUtils::testlib;
use Test::More no_plan;

use IO::Capture::Stderr;
my $oICE =  IO::Capture::Stderr->new;

use strict;

BEGIN { &use_ok('I18N::Charset') };

#================================================
# TESTS FOR enco routines
#================================================

my @aa;
#---- selection of examples which should all result in undef -----------
ok(!defined enco_charset_name(), 'no argument');
ok(!defined enco_charset_name(undef), 'undef argument');
ok(!defined enco_charset_name(""), 'empty argument');
ok(!defined enco_charset_name("junk"), 'junk argument');
ok(!defined enco_charset_name(999999), '999999 argument');
ok(!defined enco_charset_name(\@aa), 'arrayref argument');
$oICE->start;
ok(!defined I18N::Charset::add_enco_alias(undef => 'junk argument'));
ok(!defined I18N::Charset::add_enco_alias('' => 'junk argument'));
ok(!defined I18N::Charset::add_enco_alias("my-junk" => 'junk argument'));
$oICE->stop;

SKIP:
  {
  skip 'Encode is not installed', 18 unless eval "require Encode";

  #---- some successful examples -----------------------------------------
  is(enco_charset_name("x-x-sjis"), enco_charset_name("Shift JIS"), 'x-x-sjis');
  is(enco_charset_name("x-ASCII"), "ascii", 'normal literal -- ASCII');
  is(enco_charset_name("S-JIS"), "shiftjis", 'normal -- G.B.K.');
  is(enco_charset_name("cp1251"), "cp1251", 'identity -- cp1251');
  is(enco_charset_name("IBM1047"), "cp1047", 'builtin alias -- cp1047');
  is(enco_charset_name("cp037"), "cp37", 'builtin alias -- cp37');
  is(enco_charset_name("ebcdic-cp-us"), "cp37", 'builtin alias -- cp37');
  is(enco_charset_name("windows-31-j"), "cp932", 'builtin alias -- cp932');
  is(enco_charset_name("cs GB-2312"), "gb2312-raw", 'builtin alias -- gb2312-raw');

  #---- some aliasing examples -----------------------------------------
  ok(I18N::Charset::add_enco_alias('my-japanese1' => 'jis0201-raw'));
  is(enco_charset_name("my-japanese1"),
     'jis0201-raw',
     'alias literal -- my-japanese1');
  is(enco_charset_name("my-japanese1"),
     enco_charset_name('jis-x-0201'),
     'alias equal -- my-japanese1');
  ok(I18N::Charset::add_enco_alias('my-japanese2' => 'jis0208-raw'));
  is(enco_charset_name("my-japanese2"),
     enco_charset_name('cs ISO-87 JIS_X0208'), 'alias equal -- my-japanese2');
  ok(I18N::Charset::add_enco_alias('my-japanese3' => 'sjis'), 'set alias my-japanese3');
  is(enco_charset_name("my-japanese3"), 'shiftjis', 'alias literal -- my-japanese3');
  is(enco_charset_name("my-japanese3"),
     enco_charset_name('MS_KANJI'), 'alias equal -- my-japanese3');
  ok(I18N::Charset::add_enco_alias('my-japanese4' => 'my-japanese1'), 'alias-to-alias');
  is(enco_charset_name("my-japanese4"),
     enco_charset_name('my-japanese1'), 'alias equal -- my-japanese4');
  is(enco_charset_name("my-japanese4"),
     'jis0201-raw', 'alias equal -- my-japanese4');
  } # end of SKIP block

exit 0;

__END__