/**
* Copyright 2011 multibit.org
*
* Licensed under the MIT license (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://opensource.org/licenses/mit-license.php
*
* 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.
*/
package org.multibit.view;
import junit.framework.TestCase;
import org.junit.Test;
import org.multibit.Localiser;
import java.math.BigInteger;
import java.util.Locale;
public class LocaliserTest extends TestCase {
// some example keys that are in the viewer i18n files for test purposes
private String CAPITAL_CITY_KEY = "localiserTest.capitalCity";
private String SUBSTITUTE_ONE_KEY = "localiserTest.substituteOne";
private String SUBSTITUTE_TWO_KEY = "localiserTest.substituteTwo";
private String SUBSTITUTE_ONE_DATA="A";
private String SUBSTITUTE_TWO_DATA="B";
private String CAPITAL_CITY_EXPECTED_ENGLISH = "London";
private String SUBSTITUTE_ONE_EXPECTED_ENGLISH = "first = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_ENGLISH = "first = " + SUBSTITUTE_ONE_DATA + ", second = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_SPANISH = "Madrid";
private String SUBSTITUTE_ONE_EXPECTED_SPANISH = "primero = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_SPANISH = "primero = " + SUBSTITUTE_ONE_DATA + ", segundo = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_RUSSIAN = "\u041c\u043e\u0441\u043a\u0432\u0430";
private String SUBSTITUTE_ONE_EXPECTED_RUSSIAN = "\u043F\u0435\u0440\u0432\u044B\u0439 = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_RUSSIAN = "\u043F\u0435\u0440\u0432\u044B\u0439 = " + SUBSTITUTE_ONE_DATA + ", \u0432\u0442\u043E\u0440\u043E\u0439 = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_SWEDISH = "Stockholm";
private String SUBSTITUTE_ONE_EXPECTED_SWEDISH = "f\u00f6rsta = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_SWEDISH = "f\u00f6rsta = " + SUBSTITUTE_ONE_DATA + ", andra = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_NORWEGIAN = "Oslo";
private String SUBSTITUTE_ONE_EXPECTED_NORWEGIAN = "f\u00f8rste = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_NORWEGIAN = "f\u00f8rste = " + SUBSTITUTE_ONE_DATA + ", andre = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_ITALIAN = "Roma";
private String SUBSTITUTE_ONE_EXPECTED_ITALIAN = "primo = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_ITALIAN = "primo = " + SUBSTITUTE_ONE_DATA + ", secondo = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_FRENCH = "Paris";
private String SUBSTITUTE_ONE_EXPECTED_FRENCH = "premier = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_FRENCH = "premier = " + SUBSTITUTE_ONE_DATA + ", deuxi\u00e8me = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_GERMAN = "Berlin";
private String SUBSTITUTE_ONE_EXPECTED_GERMAN = "erster = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_GERMAN = "erster = " + SUBSTITUTE_ONE_DATA + ", zweiter = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_PORTUGUESE = "Lisboa";
private String SUBSTITUTE_ONE_EXPECTED_PORTUGUESE = "Primeiro = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_PORTUGUESE = "Primeiro = " + SUBSTITUTE_ONE_DATA + ", Segundo = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_DUTCH = "Amsterdam";
private String SUBSTITUTE_ONE_EXPECTED_DUTCH = "eerste = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_DUTCH = "eerste = " + SUBSTITUTE_ONE_DATA + ", tweede = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_LATVIAN = "R\u012bga";
private String SUBSTITUTE_ONE_EXPECTED_LATVIAN = "pirmais = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_LATVIAN = "pirmais = " + SUBSTITUTE_ONE_DATA + ", otrais = " + SUBSTITUTE_TWO_DATA;
private String CAPITAL_CITY_EXPECTED_TURKISH = "Ankara";
private String SUBSTITUTE_ONE_EXPECTED_TURKISH = "ilk = " + SUBSTITUTE_ONE_DATA;
private String SUBSTITUTE_TWO_EXPECTED_TURKISH = "ilk = " + SUBSTITUTE_ONE_DATA + ", ikinci = " + SUBSTITUTE_TWO_DATA;
@Test
public void testLocaliseEnglish() {
Localiser localiser = new Localiser(new Locale("en"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_ENGLISH, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_ENGLISH, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_ENGLISH, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseSpanish() {
Localiser localiser = new Localiser(new Locale("es"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_SPANISH, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_SPANISH, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_SPANISH, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseRussian() {
Localiser localiser = new Localiser(new Locale("ru"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_RUSSIAN, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_RUSSIAN, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_RUSSIAN, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseSwedish() {
Localiser localiser = new Localiser(new Locale("sv"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_SWEDISH, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_SWEDISH, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_SWEDISH, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseNorwegian() {
Localiser localiser = new Localiser(new Locale("no"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_NORWEGIAN, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_NORWEGIAN, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_NORWEGIAN, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseItalian() {
Localiser localiser = new Localiser(new Locale("it"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_ITALIAN, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_ITALIAN, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_ITALIAN, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseFrench() {
Localiser localiser = new Localiser(new Locale("fr"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_FRENCH, localiser.getString(CAPITAL_CITY_KEY));
//assertEquals(SUBSTITUTE_ONE_EXPECTED_FRENCH, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
//assertEquals(SUBSTITUTE_TWO_EXPECTED_FRENCH, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseGerman() {
Localiser localiser = new Localiser(new Locale("de"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_GERMAN, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_GERMAN, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_GERMAN, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocalisePortuguese() {
Localiser localiser = new Localiser(new Locale("pt"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_PORTUGUESE, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_PORTUGUESE, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_PORTUGUESE, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseDutch() {
Localiser localiser = new Localiser(new Locale("nl"));
assertNotNull(localiser);
//assertEquals(CAPITAL_CITY_EXPECTED_DUTCH, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_DUTCH, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_DUTCH, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseLatvian() {
Localiser localiser = new Localiser(new Locale("lv"));
assertNotNull(localiser);
assertEquals(CAPITAL_CITY_EXPECTED_LATVIAN, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_LATVIAN, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_LATVIAN, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testLocaliseTurkish() {
Localiser localiser = new Localiser(new Locale("tr"));
assertNotNull(localiser);
//assertEquals(CAPITAL_CITY_EXPECTED_TURKISH, localiser.getString(CAPITAL_CITY_KEY));
assertEquals(SUBSTITUTE_ONE_EXPECTED_TURKISH, localiser.getString(SUBSTITUTE_ONE_KEY, new Object[]{SUBSTITUTE_ONE_DATA}));
assertEquals(SUBSTITUTE_TWO_EXPECTED_TURKISH, localiser.getString(SUBSTITUTE_TWO_KEY, new Object[]{SUBSTITUTE_ONE_DATA, SUBSTITUTE_TWO_DATA}));
}
@Test
public void testVersionNumber() {
Localiser localiser = new Localiser(new Locale("en"));
assertNotNull(localiser);
// do not know what the version is, but it should be there and not be empty
String versionSeen = localiser.getVersionNumber();
assertTrue(versionSeen != null && versionSeen.length() > 0);
}
@Test
public void testBitcoinValueToStringEnglish() {
Localiser localiser = new Localiser(new Locale("en"));
BigInteger bigPositiveValue = BigInteger.valueOf(1234567890123L);
BigInteger positiveValue = BigInteger.valueOf(1234567890);
BigInteger bigNegativeValue = BigInteger.valueOf(-1234567890123L);
BigInteger negativeValue = BigInteger.valueOf(-1234567890);
assertEquals("12,345.67890123", localiser.bitcoinValueToString(bigPositiveValue, false, false));
assertEquals("12,345.67890123 BTC", localiser.bitcoinValueToString(bigPositiveValue, true, false));
assertEquals("12,345.67890123 BTC", localiser.bitcoinValueToString(bigPositiveValue, true, true));
assertEquals("12,345.67890123", localiser.bitcoinValueToString(bigPositiveValue, false, true));
assertEquals("12.3456789", localiser.bitcoinValueToString(positiveValue, false, false));
assertEquals("12.3456789 BTC", localiser.bitcoinValueToString(positiveValue, true, false));
assertEquals("12.3456789 BTC", localiser.bitcoinValueToString(positiveValue, true, true));
assertEquals("12.3456789", localiser.bitcoinValueToString(positiveValue, false, true));
assertEquals("-12,345.67890123", localiser.bitcoinValueToString(bigNegativeValue, false, false));
assertEquals("-12,345.67890123 BTC", localiser.bitcoinValueToString(bigNegativeValue, true, false));
assertEquals("-12,345.67890123 BTC", localiser.bitcoinValueToString(bigNegativeValue, true, true));
assertEquals("-12,345.67890123", localiser.bitcoinValueToString(bigNegativeValue, false, true));
assertEquals("-12.3456789", localiser.bitcoinValueToString(negativeValue, false, false));
assertEquals("-12.3456789 BTC", localiser.bitcoinValueToString(negativeValue, true, false));
assertEquals("-12.3456789 BTC", localiser.bitcoinValueToString(negativeValue, true, true));
assertEquals("-12.3456789", localiser.bitcoinValueToString(negativeValue, false, true));
assertEquals("0", localiser.bitcoinValueToString(BigInteger.ZERO, false, false));
assertEquals("0 BTC", localiser.bitcoinValueToString(BigInteger.ZERO, true, false));
assertEquals("", localiser.bitcoinValueToString(BigInteger.ZERO, true, true));
assertEquals("", localiser.bitcoinValueToString(BigInteger.ZERO, false, true));
}
@Test
public void testBitcoinValueToStringGerman() {
Localiser localiser = new Localiser(new Locale("de"));
BigInteger bigPositiveValue = BigInteger.valueOf(1234567890123L);
BigInteger positiveValue = BigInteger.valueOf(1234567890);
BigInteger bigNegativeValue = BigInteger.valueOf(-1234567890123L);
BigInteger negativeValue = BigInteger.valueOf(-1234567890);
assertEquals("12.345,67890123", localiser.bitcoinValueToString(bigPositiveValue, false, false));
assertEquals("12.345,67890123 BTC", localiser.bitcoinValueToString(bigPositiveValue, true, false));
assertEquals("12.345,67890123 BTC", localiser.bitcoinValueToString(bigPositiveValue, true, true));
assertEquals("12.345,67890123", localiser.bitcoinValueToString(bigPositiveValue, false, true));
assertEquals("12,3456789", localiser.bitcoinValueToString(positiveValue, false, false));
assertEquals("12,3456789 BTC", localiser.bitcoinValueToString(positiveValue, true, false));
assertEquals("12,3456789 BTC", localiser.bitcoinValueToString(positiveValue, true, true));
assertEquals("12,3456789", localiser.bitcoinValueToString(positiveValue, false, true));
assertEquals("-12.345,67890123", localiser.bitcoinValueToString(bigNegativeValue, false, false));
assertEquals("-12.345,67890123 BTC", localiser.bitcoinValueToString(bigNegativeValue, true, false));
assertEquals("-12.345,67890123 BTC", localiser.bitcoinValueToString(bigNegativeValue, true, true));
assertEquals("-12.345,67890123", localiser.bitcoinValueToString(bigNegativeValue, false, true));
assertEquals("-12,3456789", localiser.bitcoinValueToString(negativeValue, false, false));
assertEquals("-12,3456789 BTC", localiser.bitcoinValueToString(negativeValue, true, false));
assertEquals("-12,3456789 BTC", localiser.bitcoinValueToString(negativeValue, true, true));
assertEquals("-12,3456789", localiser.bitcoinValueToString(negativeValue, false, true));
assertEquals("0", localiser.bitcoinValueToString(BigInteger.ZERO, false, false));
assertEquals("0 BTC", localiser.bitcoinValueToString(BigInteger.ZERO, true, false));
assertEquals("", localiser.bitcoinValueToString(BigInteger.ZERO, true, true));
assertEquals("", localiser.bitcoinValueToString(BigInteger.ZERO, false, true));
}
@Test
public void testBitcoinValueToStringNotLocalised() {
Localiser localiser = new Localiser(new Locale("de"));
BigInteger bigPositiveValue = BigInteger.valueOf(1234567890123L);
BigInteger positiveValue = BigInteger.valueOf(1234567890);
BigInteger bigNegativeValue = BigInteger.valueOf(-1234567890123L);
BigInteger negativeValue = BigInteger.valueOf(-1234567890);
assertEquals("12345.67890123", localiser.bitcoinValueToStringNotLocalised(bigPositiveValue, false, false));
assertEquals("12345.67890123 BTC", localiser.bitcoinValueToStringNotLocalised(bigPositiveValue, true, false));
assertEquals("12345.67890123 BTC", localiser.bitcoinValueToStringNotLocalised(bigPositiveValue, true, true));
assertEquals("12345.67890123", localiser.bitcoinValueToStringNotLocalised(bigPositiveValue, false, true));
assertEquals("12.3456789", localiser.bitcoinValueToStringNotLocalised(positiveValue, false, false));
assertEquals("12.3456789 BTC", localiser.bitcoinValueToStringNotLocalised(positiveValue, true, false));
assertEquals("12.3456789 BTC", localiser.bitcoinValueToStringNotLocalised(positiveValue, true, true));
assertEquals("12.3456789", localiser.bitcoinValueToStringNotLocalised(positiveValue, false, true));
assertEquals("-12345.67890123", localiser.bitcoinValueToStringNotLocalised(bigNegativeValue, false, false));
assertEquals("-12345.67890123 BTC", localiser.bitcoinValueToStringNotLocalised(bigNegativeValue, true, false));
assertEquals("-12345.67890123 BTC", localiser.bitcoinValueToStringNotLocalised(bigNegativeValue, true, true));
assertEquals("-12345.67890123", localiser.bitcoinValueToStringNotLocalised(bigNegativeValue, false, true));
assertEquals("-12.3456789", localiser.bitcoinValueToStringNotLocalised(negativeValue, false, false));
assertEquals("-12.3456789 BTC", localiser.bitcoinValueToStringNotLocalised(negativeValue, true, false));
assertEquals("-12.3456789 BTC", localiser.bitcoinValueToStringNotLocalised(negativeValue, true, true));
assertEquals("-12.3456789", localiser.bitcoinValueToStringNotLocalised(negativeValue, false, true));
assertEquals("0", localiser.bitcoinValueToStringNotLocalised(BigInteger.ZERO, false, false));
assertEquals("0 BTC", localiser.bitcoinValueToStringNotLocalised(BigInteger.ZERO, true, false));
assertEquals("", localiser.bitcoinValueToStringNotLocalised(BigInteger.ZERO, true, true));
assertEquals("", localiser.bitcoinValueToStringNotLocalised(BigInteger.ZERO, false, true));
}
}