xref: /trunk/test/testuno/source/api/i18n/XExtendedCalendarTest.java (revision de76a5ada4912555267334a137577732392f43a0)
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