/* * This software is subject to the terms of the Eclipse Public License v1.0 * Agreement, available at the following URL: * http://www.eclipse.org/legal/epl-v10.html. * You must accept the terms of that agreement to use this software. * * Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package mondrian.test; import mondrian.olap.*; import mondrian.rolap.RolapConnectionProperties; import mondrian.util.Format; import java.util.Calendar; import java.util.Locale; /** * Test suite for internalization and localization. * * @see mondrian.util.FormatTest * * @author jhyde * @since September 22, 2005 */ public class I18nTest extends FoodMartTestCase { public static final char Euro = '\u20AC'; public static final char Nbsp = '\u00A0'; public static final char EA = '\u00e9'; // e acute public static final char UC = '\u00FB'; // u circumflex public void testFormat() { // Make sure Util is loaded, so that the LocaleFormatFactory gets // registered. Util.discard(Util.nl); Locale spanish = new Locale("es", "ES"); Locale german = new Locale("de", "DE"); // Thousands and decimal separators are different in Spain Format numFormat = new Format("#,000.00", spanish); assertEquals("123.456,79", numFormat.format(new Double(123456.789))); // Currency too Format currencyFormat = new Format("Currency", spanish); assertEquals( "1.234.567,79 " + Euro, currencyFormat.format(new Double(1234567.789))); // Dates Format dateFormat = new Format("Medium Date", spanish); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, 2005); calendar.set(Calendar.MONTH, 0); // January, 0-based calendar.set(Calendar.DATE, 22); java.util.Date date = calendar.getTime(); assertEquals("22-ene-05", dateFormat.format(date)); // Dates in German dateFormat = new Format("Long Date", german); assertEquals("Samstag, Januar 22, 2005", dateFormat.format(date)); } public void testAutoFrench() { // Create a connection in French. String localeName = "fr_FR"; String resultString = "12" + Nbsp + "345,67"; assertFormatNumber(localeName, resultString); } public void testAutoSpanish() { // Format a number in (Peninsular) spanish. assertFormatNumber("es", "12.345,67"); } public void testAutoMexican() { // Format a number in Mexican spanish. assertFormatNumber("es_MX", "12,345.67"); } private void assertFormatNumber(String localeName, String resultString) { final Util.PropertyList properties = TestContext.instance().getConnectionProperties().clone(); properties.put(RolapConnectionProperties.Locale.name(), localeName); Connection connection = DriverManager.getConnection(properties, null); Query query = connection.parseQuery( "WITH MEMBER [Measures].[Foo] AS ' 12345.67 ',\n" + " FORMAT_STRING='#,###.00'\n" + "SELECT {[Measures].[Foo]} ON COLUMNS\n" + "FROM [Sales]"); Result result = connection.execute(query); String actual = TestContext.toString(result); TestContext.assertEqualsVerbose( "Axis #0:\n" + "{}\n" + "Axis #1:\n" + "{[Measures].[Foo]}\n" + "Row #0: " + resultString + "\n", actual); } } // End I18nTest.java