--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/utils/tsrc/localisation/javasrc/com/nokia/mj/test/utils/LocalisationTest.java Wed Oct 13 14:23:59 2010 +0300
@@ -0,0 +1,325 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+package com.nokia.mj.test.utils;
+
+import java.util.Date;
+
+import com.nokia.mj.impl.utils.ResourceLoader;
+import com.nokia.mj.impl.utils.Formatter;
+
+import com.nokia.mj.impl.utils.Logger;
+
+import com.nokia.mj.impl.installer.utils.InstallerMain;
+
+import j2meunit.framework.Test;
+import j2meunit.framework.TestCase;
+import j2meunit.framework.TestMethod;
+import j2meunit.framework.TestSuite;
+
+public class LocalisationTest extends TestCase implements InstallerMain
+{
+ // Must have no-argument constructor for Class.forname()
+ public LocalisationTest()
+ {
+ }
+
+ public LocalisationTest(String sTestName, TestMethod rTestMethod)
+ {
+ super(sTestName, rTestMethod);
+ }
+
+ // Begin j2meunit test framework setup
+ public void installerMain(String[] args)
+ {
+ com.nokia.mj.impl.utils.OmjTestRunner.run(suite());
+ }
+
+
+ public Test suite()
+ {
+ // TestSuite aSuite = new TestSuite();
+ TestSuite aSuite = new TestSuite(this.getClass().getName());
+
+ aSuite.addTest(new LocalisationTest("formatterTest", new TestMethod()
+ {
+ public void run(TestCase tc)
+ {
+ ((LocalisationTest) tc).formatterTest();
+ }
+ }));
+
+ aSuite.addTest(new LocalisationTest("resourceLoaderTest", new TestMethod()
+ {
+ public void run(TestCase tc)
+ {
+ ((LocalisationTest) tc).resourceLoaderTest();
+ }
+ }));
+
+ return aSuite;
+ }
+
+ void formatterTest()
+ {
+ // Zero argument
+ assertEquals(
+ "Test",
+ new Formatter("Test").toString());
+
+ // One argument tests
+ assertEquals(
+ "Test 100",
+ new Formatter("Test %0N").arg(100).toString());
+
+ assertEquals(
+ "Test 1",
+ new Formatter("Test %C").arg('1').toString());
+
+ assertEquals(
+ "Test A",
+ new Formatter("Test %0C").arg('A').toString());
+
+ // Two argument tests
+ assertEquals(
+ "Test test 100",
+ new Formatter("Test %1U %0N").arg(100).arg("test").toString());
+
+ assertEquals(
+ "100 test test",
+ new Formatter("%0 test %1").arg(100).arg("test").toString());
+
+ assertEquals(
+ "Test A B C",
+ new Formatter("Test %0C %1 %2C").arg('A').arg('B').arg('C').toString());
+
+ // Two argument tests with array
+ assertEquals(
+ "Test test 100",
+ new Formatter("Test %1U %0N").format(new Object[]
+ {
+ new Integer(100), "test"
+ }));
+
+ assertEquals(
+ "100 test test",
+ new Formatter("%0 test %1").format(new Object[]
+ {
+ new Integer(100), "test"
+ }));
+
+ // Missing argument, no failure, just unreplaced parameter
+ assertEquals(
+ "100 test %1",
+ new Formatter("%0 test %1").arg(100).toString());
+
+ // Extra argument, no failure
+ assertEquals(
+ "100 test",
+ new Formatter("%0 test").arg(100).arg("test").toString());
+
+ Date testDate = new Date(1234567890); // 15/01/1970
+ // Test case assumes emulator locale is default as EDateEuropean.
+ assertEquals("15/01/1970", new Formatter("%0").arg(testDate).toString());
+
+ Object obj = testDate;
+ assertEquals("15/01/1970", new Formatter("%0").arg(obj).toString());
+
+ obj = new Integer(1);
+ assertEquals("1", new Formatter("%0").arg(obj).toString());
+
+ obj = new String("me");
+ assertEquals("Test me", new Formatter("Test %0").arg(obj).toString());
+
+ // Test skip not supported type
+ obj = new Boolean(false);
+ assertEquals("Test %0", new Formatter("Test %0").arg(obj).toString());
+
+ // Test MAX %1U[08]
+ assertEquals(
+ "Test testMyTe 100",
+ new Formatter("Test %1U[08] %0N").arg(100).arg("testMyTest").toString());
+
+ // Test %U[]
+ assertEquals(
+ "Test testMyTest",
+ new Formatter("Test %U[]").arg("testMyTest").toString());
+
+ // Test %U[08]
+ assertEquals(
+ "Test testMyTe",
+ new Formatter("Test %U[08]").arg("testMyTest").toString());
+
+ // Test %0[]
+ assertEquals(
+ "Test testMyTest",
+ new Formatter("Test %0[]").arg("testMyTest").toString());
+
+ // Test %0[08]
+ assertEquals(
+ "Test testMyTe",
+ new Formatter("Test %0[08]").arg("testMyTest").toString());
+
+ // Test %U[20 Skip
+ assertEquals(
+ "Test %U[20",
+ new Formatter("Test %U[20").arg("testMyTest").toString());
+
+ // Test %U[300]
+ assertEquals(
+ "Test testMyTest",
+ new Formatter("Test %U[300]").arg("testMyTest").toString());
+
+ // Test %U[8]
+ assertEquals(
+ "Test testMyTe",
+ new Formatter("Test %U[8]").arg("testMyTest").toString());
+
+ // Test Max is higher than actual string. Expected output: whole string no padding.
+ assertEquals(
+ "Test testMyTest",
+ new Formatter("Test %U[80]").arg("testMyTest").toString());
+
+ // Test Max is higher than pattern and string is shorter than pattern.
+ assertEquals(
+ "t to",
+ new Formatter("t %U[09]").arg("to").toString());
+
+ // Test 0 len Max
+ assertEquals(
+ "t ",
+ new Formatter("t %U[00]").arg("to").toString());
+
+ // Test 1 len Max
+ assertEquals(
+ "t 1",
+ new Formatter("t %U[01]").arg("12").toString());
+
+ // Test 0 len Max with 0 len replacement
+ assertEquals(
+ "t ",
+ new Formatter("t %U[00]").arg("").toString());
+
+ // Test 1 len Max with 1 len replacement
+ assertEquals(
+ "t 1",
+ new Formatter("t %U[01]").arg("1").toString());
+ }
+
+ void resourceLoaderTest()
+ {
+
+ ResourceLoader res = new ResourceLoader("testresource", "test_");
+
+ // Test existing
+ assertEquals(
+ "id1 test",
+ res.format("id_1").arg("test").toString());
+ assertEquals(
+ "id2 test2",
+ res.format("id_2").arg("test2").toString());
+ assertEquals(
+ "id3 test3",
+ res.format("id_3").arg("test3").toString());
+
+// Test full name
+ assertEquals(
+ "id1 test",
+ res.format("test_id_1").arg("test").toString());
+// Test non-existing, with prefix
+ assertEquals(
+ "test_id_notfound",
+ res.format("test_id_notfound").arg("test3").toString());
+
+ // Test non-existing, without prefix
+ assertEquals(
+ "test_id_notfound",
+ res.format("id_notfound").arg("test3").toString());
+
+ // Test array
+ assertEquals(
+ "id3 test3",
+ res.format("id_3", new Object[] {"test3"}));
+
+ // Test enter decoding.
+ assertEquals(
+ "id4 \n test4 \n",
+ res.format("id_4").arg("test4").toString());
+
+ // Test backlash decoding.
+ assertEquals(
+ "\\id5 \\ test5",
+ res.format("id_5").arg("test5").toString());
+
+ // Test double-quote decoding.
+ assertEquals(
+ "id6 \"\" test6",
+ res.format("id_6").arg("test6").toString());
+
+ // Test single-quote decoding.
+ assertEquals(
+ "id7 \' test7",
+ res.format("id_7").arg("test7").toString());
+
+ // Test tabulator decoding.
+ assertEquals(
+ "id8\ttest8",
+ res.format("id_8").arg("test8").toString());
+
+ // Test character code <0x20AC>
+ assertEquals(
+ "id9 It takes 800 \u20ac to win!",
+ res.format("id_9").arg(800).toString());
+
+ // Test two character codes.
+ assertEquals(
+ "id10 It takes \u20ac 800 \u20ac to win!",
+ res.format("id_10").arg(800).toString());
+
+ // Test two character codes in a row. Test <0x20ac><0x20ac>
+ assertEquals(
+ "id11 It takes \u20ac\u20ac to win!",
+ res.format("id_11").toString());
+
+ // Test only character code.
+ assertEquals(
+ "\u20ac",
+ res.format("id_12").toString());
+
+ // Test invalid character code.
+ assertEquals(
+ "id13 It <0x20A>to win!",
+ res.format("id_13").toString());
+
+
+ // Test character code as first character.
+ assertEquals(
+ "\u20ac id14",
+ res.format("id_14").toString());
+
+ // Test character code as last character.
+ assertEquals(
+ "id15 \u20ac",
+ res.format("id_15").toString());
+
+ // Test invalid character.
+ assertEquals(
+ "id16 <0xG0AC>",
+ res.format("id_16").toString());
+ }
+}