267 lines
5.3 KiB
Perl
Executable File
267 lines
5.3 KiB
Perl
Executable File
#! /usr/bin/perl -w
|
||
# Test suite for different encodings
|
||
# Copyright (c) 2003-2007 imacat. All rights reserved. This program is free
|
||
# software; you can redistribute it and/or modify it under the same terms
|
||
# as Perl itself.
|
||
|
||
use 5.008;
|
||
use strict;
|
||
use warnings;
|
||
use Test;
|
||
|
||
BEGIN { plan tests => 34 }
|
||
|
||
use Encode qw();
|
||
use FindBin qw();
|
||
use File::Spec::Functions qw(catdir);
|
||
use lib $FindBin::Bin;
|
||
use vars qw($LOCALEDIR $r);
|
||
$LOCALEDIR = catdir($FindBin::Bin, "locale");
|
||
|
||
# Different encodings
|
||
# English
|
||
# Find the default encoding
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("en");
|
||
$_->bindtextdomain("test", $LOCALEDIR);
|
||
$_->textdomain("test");
|
||
$_ = $_->encoding;
|
||
return 1;
|
||
};
|
||
# 1
|
||
ok($r, 1);
|
||
# 2
|
||
ok($_, "US-ASCII");
|
||
|
||
# Traditional Chinese
|
||
# Find the default encoding
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test", $LOCALEDIR);
|
||
$_->textdomain("test");
|
||
$_ = $_->encoding;
|
||
return 1;
|
||
};
|
||
# 3
|
||
ok($r, 1);
|
||
# 4
|
||
ok($_, "Big5");
|
||
|
||
# Turn to Big5
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test", $LOCALEDIR);
|
||
$_->textdomain("test");
|
||
$_->encoding("Big5");
|
||
$_ = $_->maketext("Hello, world!");
|
||
return 1;
|
||
};
|
||
# 5
|
||
ok($r, 1);
|
||
# 6
|
||
ok($_, "大家好。");
|
||
|
||
# Turn to UTF-8
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test", $LOCALEDIR);
|
||
$_->textdomain("test");
|
||
$_->encoding("UTF-8");
|
||
$_ = $_->maketext("Hello, world!");
|
||
return 1;
|
||
};
|
||
# 7
|
||
ok($r, 1);
|
||
# 8
|
||
ok($_, "憭批振憟賬<E6869F><E8B3AC>");
|
||
|
||
# Turn to UTF-16LE
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test", $LOCALEDIR);
|
||
$_->textdomain("test");
|
||
$_->encoding("UTF-16LE");
|
||
$_ = $_->maketext("Hello, world!");
|
||
return 1;
|
||
};
|
||
# 9
|
||
ok($r, 1);
|
||
# 10
|
||
ok($_, "'Y跋}Y0");
|
||
|
||
# Find the default encoding, in UTF-8
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test_utf8", $LOCALEDIR);
|
||
$_->textdomain("test_utf8");
|
||
$_ = $_->encoding;
|
||
return 1;
|
||
};
|
||
# 11
|
||
ok($r, 1);
|
||
# 12
|
||
ok($_, "UTF-8");
|
||
|
||
# Turn to UTF-8
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test_utf8", $LOCALEDIR);
|
||
$_->textdomain("test_utf8");
|
||
$_->encoding("UTF-8");
|
||
$_ = $_->maketext("Hello, world!");
|
||
return 1;
|
||
};
|
||
# 13
|
||
ok($r, 1);
|
||
# 14
|
||
ok($_, "憭批振憟賬<E6869F><E8B3AC>");
|
||
|
||
# Turn to Big5
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test_utf8", $LOCALEDIR);
|
||
$_->textdomain("test_utf8");
|
||
$_->encoding("Big5");
|
||
$_ = $_->maketext("Hello, world!");
|
||
return 1;
|
||
};
|
||
# 15
|
||
ok($r, 1);
|
||
# 16
|
||
ok($_, "大家好。");
|
||
|
||
# Turn to UTF-16LE
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test_utf8", $LOCALEDIR);
|
||
$_->textdomain("test_utf8");
|
||
$_->encoding("UTF-16LE");
|
||
$_ = $_->maketext("Hello, world!");
|
||
return 1;
|
||
};
|
||
# 17
|
||
ok($r, 1);
|
||
# 18
|
||
ok($_, "'Y跋}Y0");
|
||
|
||
# Find the default encoding
|
||
# Simplified Chinese
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-cn");
|
||
$_->bindtextdomain("test_utf8", $LOCALEDIR);
|
||
$_->textdomain("test_utf8");
|
||
$_ = $_->encoding;
|
||
return 1;
|
||
};
|
||
# 19
|
||
ok($r, 1);
|
||
# 20
|
||
ok($_, "UTF-8");
|
||
|
||
# Turn to GB2312
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-cn");
|
||
$_->bindtextdomain("test_utf8", $LOCALEDIR);
|
||
$_->textdomain("test_utf8");
|
||
$_->encoding("GB2312");
|
||
$_ = $_->maketext("Hello, world!");
|
||
return 1;
|
||
};
|
||
# 21
|
||
ok($r, 1);
|
||
# 22
|
||
ok($_, "湮模疑﹝");
|
||
|
||
# Encode failure
|
||
# FB_DEFAULT
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test2", $LOCALEDIR);
|
||
$_->textdomain("test2");
|
||
$_->encoding("GB2312");
|
||
$_ = $_->maketext("Every story has a happy ending.");
|
||
return 1;
|
||
};
|
||
# 23
|
||
ok($r, 1);
|
||
# 24
|
||
ok($_, "嘟岈飲衄藝?腔?擁﹝");
|
||
|
||
# FB_CROAK
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test2", $LOCALEDIR);
|
||
$_->textdomain("test2");
|
||
$_->encoding("GB2312");
|
||
$_->encode_failure(Encode::FB_CROAK);
|
||
$_ = $_->maketext("Every story has a happy ending.");
|
||
return 1;
|
||
};
|
||
# 25
|
||
ok($r, undef);
|
||
# 26
|
||
ok($@, qr/does not map to/);
|
||
|
||
# FB_HTMLCREF
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test2", $LOCALEDIR);
|
||
$_->textdomain("test2");
|
||
$_->encoding("GB2312");
|
||
$_->encode_failure(Encode::FB_HTMLCREF);
|
||
$_ = $_->maketext("Every story has a happy ending.");
|
||
return 1;
|
||
};
|
||
# 27
|
||
ok($r, 1);
|
||
# 28
|
||
ok($_, "嘟岈飲衄藝麗腔結擁﹝");
|
||
|
||
# Return the unencoded UTF-8 text
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test", $LOCALEDIR);
|
||
$_->textdomain("test");
|
||
$_->encoding(undef);
|
||
$_ = $_->maketext("Hello, world!");
|
||
return 1;
|
||
};
|
||
# 29
|
||
ok($r, 1);
|
||
# 30
|
||
ok($_, "\x{5927}\x{5BB6}\x{597D}\x{3002}");
|
||
# 31
|
||
ok((Encode::is_utf8($_)? "utf8": "non-utf8"), "utf8");
|
||
|
||
# Return the unencoded UTF-8 text with auto lexicon
|
||
$r = eval {
|
||
require T_L10N;
|
||
$_ = T_L10N->get_handle("zh-tw");
|
||
$_->bindtextdomain("test", $LOCALEDIR);
|
||
$_->textdomain("test");
|
||
$_->encoding(undef);
|
||
$_ = $_->maketext("Big watermelon");
|
||
return 1;
|
||
};
|
||
# 32
|
||
ok($r, 1);
|
||
# 33
|
||
ok($_, "Big watermelon");
|
||
# 34
|
||
ok((Encode::is_utf8($_)? "utf8": "non-utf8"), "utf8");
|