1*de76a5adSDamjan Jovanovic /************************************************************** 2*de76a5adSDamjan Jovanovic * 3*de76a5adSDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*de76a5adSDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*de76a5adSDamjan Jovanovic * distributed with this work for additional information 6*de76a5adSDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*de76a5adSDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*de76a5adSDamjan Jovanovic * "License"); you may not use this file except in compliance 9*de76a5adSDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*de76a5adSDamjan Jovanovic * 11*de76a5adSDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*de76a5adSDamjan Jovanovic * 13*de76a5adSDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*de76a5adSDamjan Jovanovic * software distributed under the License is distributed on an 15*de76a5adSDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*de76a5adSDamjan Jovanovic * KIND, either express or implied. See the License for the 17*de76a5adSDamjan Jovanovic * specific language governing permissions and limitations 18*de76a5adSDamjan Jovanovic * under the License. 19*de76a5adSDamjan Jovanovic * 20*de76a5adSDamjan Jovanovic *************************************************************/ 21*de76a5adSDamjan Jovanovic 22*de76a5adSDamjan Jovanovic 23*de76a5adSDamjan Jovanovic package ifc.i18n; 24*de76a5adSDamjan Jovanovic 25*de76a5adSDamjan Jovanovic import com.sun.star.i18n.CalendarDisplayCode; 26*de76a5adSDamjan Jovanovic import com.sun.star.i18n.NativeNumberMode; 27*de76a5adSDamjan Jovanovic import com.sun.star.i18n.XExtendedCalendar; 28*de76a5adSDamjan Jovanovic import com.sun.star.i18n.XLocaleData; 29*de76a5adSDamjan Jovanovic import com.sun.star.lang.Locale; 30*de76a5adSDamjan Jovanovic import com.sun.star.lang.XMultiServiceFactory; 31*de76a5adSDamjan Jovanovic import com.sun.star.uno.UnoRuntime; 32*de76a5adSDamjan Jovanovic import java.text.SimpleDateFormat; 33*de76a5adSDamjan Jovanovic import java.util.Calendar; 34*de76a5adSDamjan Jovanovic import java.util.Date; 35*de76a5adSDamjan Jovanovic import java.util.GregorianCalendar; 36*de76a5adSDamjan Jovanovic import lib.MultiMethodTest; 37*de76a5adSDamjan Jovanovic 38*de76a5adSDamjan Jovanovic /** 39*de76a5adSDamjan Jovanovic * 40*de76a5adSDamjan Jovanovic */ 41*de76a5adSDamjan Jovanovic public class _XExtendedCalendar extends MultiMethodTest { 42*de76a5adSDamjan Jovanovic public XExtendedCalendar oObj = null; 43*de76a5adSDamjan Jovanovic boolean useUSENLocale = false; 44*de76a5adSDamjan Jovanovic /** 45*de76a5adSDamjan Jovanovic * Load a calendar 46*de76a5adSDamjan Jovanovic */ 47*de76a5adSDamjan Jovanovic public void before() { 48*de76a5adSDamjan Jovanovic Locale[] installed_locales = null; 49*de76a5adSDamjan Jovanovic XLocaleData locData = null; 50*de76a5adSDamjan Jovanovic try { 51*de76a5adSDamjan Jovanovic locData = (XLocaleData) UnoRuntime.queryInterface( 52*de76a5adSDamjan Jovanovic XLocaleData.class, 53*de76a5adSDamjan Jovanovic ((XMultiServiceFactory)tParam.getMSF()).createInstance( 54*de76a5adSDamjan Jovanovic "com.sun.star.i18n.LocaleData")); 55*de76a5adSDamjan Jovanovic } catch (com.sun.star.uno.Exception e) { 56*de76a5adSDamjan Jovanovic 57*de76a5adSDamjan Jovanovic } 58*de76a5adSDamjan Jovanovic installed_locales = locData.getAllInstalledLocaleNames(); 59*de76a5adSDamjan Jovanovic // use first Locale as fallback, if US-English is not found 60*de76a5adSDamjan Jovanovic Locale lo = installed_locales[0]; 61*de76a5adSDamjan Jovanovic for (int i=0; i<installed_locales.length; i++) { 62*de76a5adSDamjan Jovanovic // search for "en" and "US" 63*de76a5adSDamjan Jovanovic if (installed_locales[i].Language.equals("en") && 64*de76a5adSDamjan Jovanovic installed_locales[i].Country.equals("US")) { 65*de76a5adSDamjan Jovanovic lo = installed_locales[i]; 66*de76a5adSDamjan Jovanovic useUSENLocale = true; 67*de76a5adSDamjan Jovanovic } 68*de76a5adSDamjan Jovanovic } 69*de76a5adSDamjan Jovanovic log.println("Choose Locale: '" + lo.Language + "', '" + lo.Country + "'"); 70*de76a5adSDamjan Jovanovic oObj.loadDefaultCalendar(lo); 71*de76a5adSDamjan Jovanovic } 72*de76a5adSDamjan Jovanovic 73*de76a5adSDamjan Jovanovic 74*de76a5adSDamjan Jovanovic public void _getDisplayString() { 75*de76a5adSDamjan Jovanovic // against regression: the current state is the right one. 76*de76a5adSDamjan Jovanovic boolean result = true; 77*de76a5adSDamjan Jovanovic String[] displayString = new String[6]; 78*de76a5adSDamjan Jovanovic // build the defaults with the Java Calendar functions 79*de76a5adSDamjan Jovanovic String[] expectedStringResult = new String[6]; 80*de76a5adSDamjan Jovanovic Calendar cal = new GregorianCalendar(); 81*de76a5adSDamjan Jovanovic Date actualDate = cal.getTime(); 82*de76a5adSDamjan Jovanovic 83*de76a5adSDamjan Jovanovic SimpleDateFormat sdf = getSDF("yy"); 84*de76a5adSDamjan Jovanovic expectedStringResult[0] = "AD" + sdf.format(actualDate); 85*de76a5adSDamjan Jovanovic 86*de76a5adSDamjan Jovanovic sdf = getSDF("yyyy"); 87*de76a5adSDamjan Jovanovic expectedStringResult[1] = "AD" + sdf.format(actualDate); 88*de76a5adSDamjan Jovanovic 89*de76a5adSDamjan Jovanovic sdf = getSDF("MM"); 90*de76a5adSDamjan Jovanovic expectedStringResult[2] = sdf.format(actualDate); 91*de76a5adSDamjan Jovanovic 92*de76a5adSDamjan Jovanovic int month = cal.get(Calendar.MONTH) + 1; 93*de76a5adSDamjan Jovanovic String quarter = "Q1"; 94*de76a5adSDamjan Jovanovic String longQuarter = "1st quarter"; 95*de76a5adSDamjan Jovanovic if (month > 3 && month < 7) { quarter = "Q2"; longQuarter = "2nd quarter"; } 96*de76a5adSDamjan Jovanovic else if (month > 6 && month < 10) { quarter = "Q3"; longQuarter = "3rd quarter"; } 97*de76a5adSDamjan Jovanovic else if (month > 10 && month < 13) {quarter = "Q4"; longQuarter = "4th quarter"; } 98*de76a5adSDamjan Jovanovic expectedStringResult[3] = quarter; 99*de76a5adSDamjan Jovanovic expectedStringResult[4] = longQuarter; 100*de76a5adSDamjan Jovanovic 101*de76a5adSDamjan Jovanovic sdf = getSDF("MMMM"); 102*de76a5adSDamjan Jovanovic expectedStringResult[5] = sdf.format(actualDate); 103*de76a5adSDamjan Jovanovic 104*de76a5adSDamjan Jovanovic displayString[0] = oObj.getDisplayString(CalendarDisplayCode.SHORT_YEAR_AND_ERA, NativeNumberMode.NATNUM0); 105*de76a5adSDamjan Jovanovic displayString[1] = oObj.getDisplayString(CalendarDisplayCode.LONG_YEAR_AND_ERA, NativeNumberMode.NATNUM0); 106*de76a5adSDamjan Jovanovic displayString[2] = oObj.getDisplayString(CalendarDisplayCode.LONG_MONTH, NativeNumberMode.NATNUM0); 107*de76a5adSDamjan Jovanovic displayString[3] = oObj.getDisplayString(CalendarDisplayCode.SHORT_QUARTER, NativeNumberMode.NATNUM0); 108*de76a5adSDamjan Jovanovic displayString[4] = oObj.getDisplayString(CalendarDisplayCode.LONG_QUARTER, NativeNumberMode.NATNUM0); 109*de76a5adSDamjan Jovanovic displayString[5] = oObj.getDisplayString(CalendarDisplayCode.LONG_MONTH_NAME, NativeNumberMode.NATNUM0); 110*de76a5adSDamjan Jovanovic 111*de76a5adSDamjan Jovanovic for (int i=0; i<displayString.length; i++) { 112*de76a5adSDamjan Jovanovic boolean locResult = false; 113*de76a5adSDamjan Jovanovic if (useUSENLocale) { 114*de76a5adSDamjan Jovanovic locResult = displayString[i].equals(expectedStringResult[i]); 115*de76a5adSDamjan Jovanovic if (!locResult) 116*de76a5adSDamjan Jovanovic log.println("getDisplayString() result " + i + ": '" + displayString[i] 117*de76a5adSDamjan Jovanovic + "', expected: '" + expectedStringResult[i] + "'"); 118*de76a5adSDamjan Jovanovic result &= locResult; 119*de76a5adSDamjan Jovanovic } 120*de76a5adSDamjan Jovanovic else { // no defaults for other locales, just expect a String 121*de76a5adSDamjan Jovanovic locResult &= displayString[i] != null; 122*de76a5adSDamjan Jovanovic if (!locResult) 123*de76a5adSDamjan Jovanovic log.println("getDisplayString() result " + i + " was 'null'"); 124*de76a5adSDamjan Jovanovic result &= locResult; 125*de76a5adSDamjan Jovanovic } 126*de76a5adSDamjan Jovanovic } 127*de76a5adSDamjan Jovanovic tRes.tested("getDisplayString()", result); 128*de76a5adSDamjan Jovanovic } 129*de76a5adSDamjan Jovanovic 130*de76a5adSDamjan Jovanovic private SimpleDateFormat getSDF(String format){ 131*de76a5adSDamjan Jovanovic if (useUSENLocale) return new SimpleDateFormat(format, java.util.Locale.US); 132*de76a5adSDamjan Jovanovic return new SimpleDateFormat(format); 133*de76a5adSDamjan Jovanovic } 134*de76a5adSDamjan Jovanovic } 135