158 lines
3.9 KiB
Perl
158 lines
3.9 KiB
Perl
|
#! /usr/bin/perl -w
|
|||
|
# Test suite for switching between different settings
|
|||
|
# 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 => 25 }
|
|||
|
|
|||
|
use FindBin;
|
|||
|
use File::Spec::Functions qw(catdir catfile);
|
|||
|
use lib $FindBin::Bin;
|
|||
|
use vars qw($LOCALEDIR $r);
|
|||
|
$LOCALEDIR = catdir($FindBin::Bin, "locale");
|
|||
|
|
|||
|
# Switching between different settings
|
|||
|
use File::Copy qw(copy);
|
|||
|
use vars qw($lh1 $lh2 $dir $f $f1 $f2);
|
|||
|
|
|||
|
# 2 language handles of the same localization subclass
|
|||
|
$r = eval {
|
|||
|
require T_L10N;
|
|||
|
@_ = qw();
|
|||
|
$lh1 = T_L10N->get_handle("en");
|
|||
|
$lh1->bindtextdomain("test", $LOCALEDIR);
|
|||
|
$lh1->textdomain("test");
|
|||
|
$lh2 = T_L10N->get_handle("en");
|
|||
|
$lh2->bindtextdomain("test2", $LOCALEDIR);
|
|||
|
$lh2->textdomain("test2");
|
|||
|
$_[0] = $lh1->maketext("Hello, world!");
|
|||
|
$_[1] = $lh1->maketext("Every story has a happy ending.");
|
|||
|
$_[2] = $lh2->maketext("Hello, world!");
|
|||
|
$_[3] = $lh2->maketext("Every story has a happy ending.");
|
|||
|
$_[4] = $lh1->maketext("Hello, world!");
|
|||
|
$_[5] = $lh1->maketext("Every story has a happy ending.");
|
|||
|
return 1;
|
|||
|
};
|
|||
|
# 1
|
|||
|
ok($r, 1);
|
|||
|
# 2
|
|||
|
ok($_[0], "Hiya :)");
|
|||
|
# 3
|
|||
|
ok($_[1], "Every story has a happy ending.");
|
|||
|
# 4
|
|||
|
ok($_[2], "Hello, world!");
|
|||
|
# 5
|
|||
|
ok($_[3], "Pray it.");
|
|||
|
# 6
|
|||
|
ok($_[4], "Hiya :)");
|
|||
|
# 7
|
|||
|
ok($_[5], "Every story has a happy ending.");
|
|||
|
|
|||
|
# Switch between domains
|
|||
|
$r = eval {
|
|||
|
require T_L10N;
|
|||
|
@_ = qw();
|
|||
|
$_ = T_L10N->get_handle("en");
|
|||
|
$_->bindtextdomain("test", $LOCALEDIR);
|
|||
|
$_->bindtextdomain("test2", $LOCALEDIR);
|
|||
|
$_->textdomain("test");
|
|||
|
$_[0] = $_->maketext("Hello, world!");
|
|||
|
$_[1] = $_->maketext("Every story has a happy ending.");
|
|||
|
$_->textdomain("test2");
|
|||
|
$_[2] = $_->maketext("Hello, world!");
|
|||
|
$_[3] = $_->maketext("Every story has a happy ending.");
|
|||
|
$_->textdomain("test");
|
|||
|
$_[4] = $_->maketext("Hello, world!");
|
|||
|
$_[5] = $_->maketext("Every story has a happy ending.");
|
|||
|
return 1;
|
|||
|
};
|
|||
|
# 8
|
|||
|
ok($r, 1);
|
|||
|
# 9
|
|||
|
ok($_[0], "Hiya :)");
|
|||
|
# 10
|
|||
|
ok($_[1], "Every story has a happy ending.");
|
|||
|
# 11
|
|||
|
ok($_[2], "Hello, world!");
|
|||
|
# 12
|
|||
|
ok($_[3], "Pray it.");
|
|||
|
# 13
|
|||
|
ok($_[4], "Hiya :)");
|
|||
|
# 14
|
|||
|
ok($_[5], "Every story has a happy ending.");
|
|||
|
|
|||
|
# Switch between encodings
|
|||
|
$r = eval {
|
|||
|
require T_L10N;
|
|||
|
@_ = qw();
|
|||
|
$_ = T_L10N->get_handle("zh-tw");
|
|||
|
$_->bindtextdomain("test", $LOCALEDIR);
|
|||
|
$_->textdomain("test");
|
|||
|
$_->encoding("Big5");
|
|||
|
$_[0] = $_->maketext("Hello, world!");
|
|||
|
$_->encoding("UTF-8");
|
|||
|
$_[1] = $_->maketext("Hello, world!");
|
|||
|
$_->encoding("Big5");
|
|||
|
$_[2] = $_->maketext("Hello, world!");
|
|||
|
return 1;
|
|||
|
};
|
|||
|
# 15
|
|||
|
ok($r, 1);
|
|||
|
# 16
|
|||
|
ok($_[0], "<22>j<EFBFBD>a<EFBFBD>n<EFBFBD>C");
|
|||
|
# 17
|
|||
|
ok($_[1], "大家好。");
|
|||
|
# 18
|
|||
|
ok($_[2], "<22>j<EFBFBD>a<EFBFBD>n<EFBFBD>C");
|
|||
|
|
|||
|
# Reload the text
|
|||
|
$r = eval {
|
|||
|
$dir = catdir($LOCALEDIR, "en", "LC_MESSAGES");
|
|||
|
$f = catfile($dir, "test_reload.mo");
|
|||
|
$f1 = catfile($dir, "test.mo");
|
|||
|
$f2 = catfile($dir, "test2.mo");
|
|||
|
unlink $f;
|
|||
|
copy $f1, $f or die "ERROR: $f1 $f: $!";
|
|||
|
|
|||
|
require T_L10N;
|
|||
|
@_ = qw();
|
|||
|
$_ = T_L10N->get_handle("en");
|
|||
|
$_->bindtextdomain("test_reload", $LOCALEDIR);
|
|||
|
$_->textdomain("test_reload");
|
|||
|
$_[0] = $_->maketext("Hello, world!");
|
|||
|
$_[1] = $_->maketext("Every story has a happy ending.");
|
|||
|
unlink $f;
|
|||
|
copy $f2, $f or die "ERROR: $f2 $f: $!";
|
|||
|
$_[2] = $_->maketext("Hello, world!");
|
|||
|
$_[3] = $_->maketext("Every story has a happy ending.");
|
|||
|
$_->reload_text;
|
|||
|
$_[4] = $_->maketext("Hello, world!");
|
|||
|
$_[5] = $_->maketext("Every story has a happy ending.");
|
|||
|
|
|||
|
unlink $f;
|
|||
|
return 1;
|
|||
|
};
|
|||
|
# 19
|
|||
|
ok($r, 1);
|
|||
|
# 20
|
|||
|
ok($_[0], "Hiya :)");
|
|||
|
# 21
|
|||
|
ok($_[1], "Every story has a happy ending.");
|
|||
|
# 22
|
|||
|
ok($_[2], "Hiya :)");
|
|||
|
# 23
|
|||
|
ok($_[3], "Every story has a happy ending.");
|
|||
|
# 24
|
|||
|
ok($_[4], "Hello, world!");
|
|||
|
# 25
|
|||
|
ok($_[5], "Pray it.");
|
|||
|
|
|||
|
# Garbage collection
|
|||
|
unlink catfile($LOCALEDIR, "en", "LC_MESSAGES", "test_reload.mo");
|