Locale-Maketext-Gettext/t/01-basic.t

151 lines
3.1 KiB
Perl
Raw Permalink Normal View History

#! /usr/bin/perl -w
# Basic test suite
# Copyright (c) 2003-2008 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 => 22 }
use FindBin;
use File::Spec::Functions qw(catdir catfile);
use lib $FindBin::Bin;
use vars qw($LOCALEDIR $r);
$LOCALEDIR = catdir($FindBin::Bin, "locale");
# Basic test suite
use Encode qw(decode);
use vars qw($META $n $k1 $k2 $s1 $s2);
# bindtextdomain
$r = eval {
require T_L10N;
$_ = T_L10N->get_handle("en");
$_->bindtextdomain("test", $LOCALEDIR);
$_ = $_->bindtextdomain("test");
return 1;
};
# 1
ok($r, 1);
# 2
ok($_, "$LOCALEDIR");
# textdomain
$r = eval {
require T_L10N;
$_ = T_L10N->get_handle("en");
$_->bindtextdomain("test", $LOCALEDIR);
$_->textdomain("test");
$_ = $_->textdomain;
return 1;
};
# 3
ok($r, 1);
# 4
ok($_, "test");
# read_mo
$META = << "EOT";
Project-Id-Version: test 1.1
Report-Msgid-Bugs-To:
POT-Creation-Date: 2008-02-19 12:31+0800
PO-Revision-Date: 2008-02-19 12:31+0800
Last-Translator: imacat <imacat\@mail.imacat.idv.tw>
Language-Team: English <imacat\@mail.imacat.idv.tw>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Plural-Forms: nplurals=2; plural=n != 1;
EOT
$r = eval {
use Locale::Maketext::Gettext;
$_ = catfile($LOCALEDIR, "en", "LC_MESSAGES", "test.mo");
%_ = read_mo($_);
@_ = sort keys %_;
$n = scalar(@_);
$k1 = $_[0];
$k2 = $_[1];
$s1 = $_{$k1};
$s2 = $_{$k2};
return 1;
};
# 5
ok($r, 1);
# 6
ok($n, 4);
# 7
ok($k1, "");
# 8
ok($k2, "Hello, world!");
# 9
ok($s1, $META);
# 10
ok($s2, "Hiya :)");
# English
$r = eval {
require T_L10N;
@_ = qw();
$_ = T_L10N->get_handle("en");
$_->bindtextdomain("test", $LOCALEDIR);
$_->textdomain("test");
$_[0] = $_->maketext("Hello, world!");
$_[1] = $_->pmaketext("Menu|File|", "Hello, world!");
$_[2] = $_->pmaketext("Menu|View|", "Hello, world!");
return 1;
};
# 11
ok($r, 1);
# 12
ok($_[0], "Hiya :)");
# 13
ok($_[1], "Hiya :) under the File menu");
# 14
ok($_[2], "Hiya :) under the View menu");
# Traditional Chinese
$r = eval {
require T_L10N;
@_ = qw();
$_ = T_L10N->get_handle("zh-tw");
$_->bindtextdomain("test", $LOCALEDIR);
$_->textdomain("test");
$_[0] = $_->maketext("Hello, world!");
$_[1] = $_->pmaketext("Menu|File|", "Hello, world!");
$_[2] = $_->pmaketext("Menu|View|", "Hello, world!");
return 1;
};
# 15
ok($r, 1);
# 16
ok($_[0], "<22>j<EFBFBD>a<EFBFBD>n<EFBFBD>C");
# 17
ok($_[1], "<22>ɮ׿<C9AE><D7BF><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>j<EFBFBD>a<EFBFBD>n<EFBFBD>C");
# 18
ok($_[2], "<22>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>j<EFBFBD>a<EFBFBD>n<EFBFBD>C");
# Simplified Chinese
$r = eval {
require T_L10N;
@_ = qw();
$_ = T_L10N->get_handle("zh-cn");
$_->bindtextdomain("test", $LOCALEDIR);
$_->textdomain("test");
$_[0] = $_->maketext("Hello, world!");
$_[1] = $_->pmaketext("Menu|File|", "Hello, world!");
$_[2] = $_->pmaketext("Menu|View|", "Hello, world!");
return 1;
};
# 19
ok($r, 1);
# 20
ok($_[0], "<22><><EFBFBD>Һá<D2BA>");
# 21
ok($_[1], "<22><><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>µĴ<C2B5><C4B4>Һá<D2BA>");
# 22
ok($_[2], "<22><><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>µĴ<C2B5><C4B4>Һá<D2BA>");