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