Locale-Maketext-Gettext/t/05-switching.t

158 lines
3.9 KiB
Perl
Executable File
Raw Permalink Blame History

#! /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");