136 lines
4.2 KiB
JavaScript
136 lines
4.2 KiB
JavaScript
//
|
|
// Jala Project [http://opensvn.csie.org/traccgi/jala]
|
|
//
|
|
// Copyright 2004 ORF Online und Teletext GmbH
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the ``License'');
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an ``AS IS'' BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// $Revision$
|
|
// $LastChangedBy$
|
|
// $LastChangedDate$
|
|
// $HeadURL$
|
|
//
|
|
|
|
|
|
/**
|
|
* Declare which test methods should be run in which order
|
|
* @type Array
|
|
* @final
|
|
*/
|
|
|
|
var oldMessages;
|
|
|
|
/**
|
|
* Called before running the tests
|
|
*/
|
|
var setup = function() {
|
|
// save any currently used message bundle before
|
|
// creating the one for this test
|
|
oldMessages = jala.i18n.getMessages();
|
|
// setup the test message bundle
|
|
var messages = {};
|
|
messages.de_AT = {
|
|
"Hello, World!": "Hallo, Welt!",
|
|
"This is {0}.": "Das ist {0}.",
|
|
"You've got one new mail.": "Du hast eine neue E-Mail.",
|
|
"You've got {0} new mails.": "Du hast {0} neue E-Mails."
|
|
};
|
|
// tell jala where to find the messages
|
|
jala.i18n.setMessages(messages);
|
|
// assign a method for retrieving the locale for translation
|
|
jala.i18n.setLocaleGetter(new Function("return res.meta.locale;"));
|
|
// set the locale to use by jala.i18n
|
|
res.meta.locale = new java.util.Locale("de", "AT");
|
|
return;
|
|
};
|
|
|
|
|
|
/**
|
|
* Called after tests have finished. This method will be called
|
|
* regarless whether the test succeeded or failed.
|
|
*/
|
|
var cleanup = function() {
|
|
// restore any previous message set
|
|
jala.i18n.setMessages(oldMessages);
|
|
return;
|
|
};
|
|
|
|
/**
|
|
* Tests for formatMessage
|
|
*/
|
|
var testFormatMessage = function() {
|
|
var msg = "Es ist jetzt {0,date,EEEE, dd. MMMM yyyy, HH:mm} Uhr.";
|
|
var args = [new Date(2007, 1, 8, 17, 58)];
|
|
var result = jala.i18n.formatMessage(msg, args);
|
|
var expected = "Es ist jetzt Donnerstag, 08. Februar 2007, 17:58 Uhr.";
|
|
assertEqual(expected, result);
|
|
return;
|
|
};
|
|
|
|
/**
|
|
* Tests for gettext()
|
|
*/
|
|
var testGettext = function() {
|
|
assertEqual("Hallo, Welt!", gettext("Hello, World!"));
|
|
// test not found message key
|
|
assertEqual("Hello You!", gettext("Hello You!"));
|
|
// test gettext with additional replacement value
|
|
assertEqual("Das ist Jala I18n.", gettext("This is {0}.", "Jala I18n"));
|
|
return;
|
|
};
|
|
|
|
/**
|
|
* Tests for ngettext()
|
|
*/
|
|
var testNgettext = function() {
|
|
// zero
|
|
assertEqual("Du hast 0 neue E-Mails.",
|
|
ngettext("You've got one new mail.",
|
|
"You've got {0} new mails.",
|
|
0));
|
|
// one
|
|
assertEqual("Du hast eine neue E-Mail.",
|
|
ngettext("You've got one new mail.",
|
|
"You've got {0} new mails.",
|
|
1));
|
|
// more
|
|
assertEqual("Du hast 23 neue E-Mails.",
|
|
ngettext("You've got one new mail.",
|
|
"You've got {0} new mails.",
|
|
23));
|
|
return;
|
|
};
|
|
|
|
/**
|
|
* Tests for message macro
|
|
*/
|
|
var testMessageMacro = function() {
|
|
// singular
|
|
var skin = createSkin('<% message text="You\'ve got one new mail." %>');
|
|
assertEqual("Du hast eine neue E-Mail.", renderSkinAsString(skin));
|
|
|
|
res.handlers.testHandler = {value: 0};
|
|
// value replacement using testHandler
|
|
skin = createSkin('<% message text="You\'ve got {0} new mails." values="testHandler.value" %>');
|
|
assertEqual("Du hast 0 neue E-Mails.", renderSkinAsString(skin));
|
|
// plural including replacement using testHandler
|
|
res.handlers.testHandler.value = 23;
|
|
skin = createSkin('<% message text="You\'ve got one new mail." plural="You\'ve got {0} new mails." values="testHandler.value" %>');
|
|
assertEqual("Du hast 23 neue E-Mails.", renderSkinAsString(skin));
|
|
// using a value of the param object passed to the skin
|
|
// FIXME: appearently this doesn't work, but why?
|
|
/*
|
|
skin = createSkin('<% message text="You\'ve got one new mail." plural="You\'ve got {0} new mails." values="param.spam" %>');
|
|
assertEqual("Du hast 45 neue E-Mails.", renderSkinAsString(skin, {spam: 45}));
|
|
*/
|
|
};
|