1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="i18n_XCalendar" script:language="StarBasic">
4 
5 
6 '*************************************************************************
7 '
8 '  Licensed to the Apache Software Foundation (ASF) under one
9 '  or more contributor license agreements.  See the NOTICE file
10 '  distributed with this work for additional information
11 '  regarding copyright ownership.  The ASF licenses this file
12 '  to you under the Apache License, Version 2.0 (the
13 '  "License"); you may not use this file except in compliance
14 '  with the License.  You may obtain a copy of the License at
15 '
16 '    http://www.apache.org/licenses/LICENSE-2.0
17 '
18 '  Unless required by applicable law or agreed to in writing,
19 '  software distributed under the License is distributed on an
20 '  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 '  KIND, either express or implied.  See the License for the
22 '  specific language governing permissions and limitations
23 '  under the License.
24 '
25 '*************************************************************************
26 
27 
28 
29 
30 
31 ' Be sure that all variables are dimensioned:
32 option explicit
33 
34 
35 
36 Sub RunTest()
37 
38 '*************************************************************************
39 ' INTERFACE:
40 ' com.sun.star.i18n.XCalendar
41 '*************************************************************************
42 On Error Goto ErrHndl
43     Dim bOK As Boolean
44     Dim oLocaleData As Object
45     Dim oLocale As Object
46     Dim allLocales As Variant
47     Dim allCalendars As Variant
48     Dim uniqueID As String
49     Dim oCalendar As Object
50     Dim dDateTime As Double
51     Dim aValue As Variant
52     Dim oldValue As Variant
53     Dim newValue As Variant
54     Dim i As Integer
55 
56     oLocaleData = createUnoService("com.sun.star.i18n.LocaleData")
57     allLocales = oLocaleData.getAllInstalledLocaleNames()
58     Out.Log("Found " + ubound(allLocales) + " Loacales registered in the system")
59     Randomize
60     oLocale = allLocales(rnd * ubound(allLocales))
61     Out.Log("Choose for testing : " + oLocale.Country)
62 
63     Test.StartMethod("getAllCalendars()")
64     bOK = true
65     allCalendars = oObj.getAllCalendars(oLocale)
66     Out.Log("There are " + ubound(allCalendars) + 1 + " calendars for this locale.")
67     bOK = bOK AND NOT isNULL(allCalendars)
68     Test.MethodTested("getAllCalendars()", bOK)
69 
70     Test.StartMethod("loadDefaultCalendar()")
71     bOK = true
72     oObj.loadDefaultCalendar(oLocale)
73     bOK = bOK AND oObj.getLoadedCalendar().Default
74     Test.MethodTested("loadDefaultCalendar()", bOK)
75 
76     Test.StartMethod("getUniqueID()")
77     bOK = true
78     uniqueID = oObj.getUniqueID()
79     Out.Log("UniqueID for loaded calendar is " + uniqueID)
80     bOK = bOK AND (uniqueID = allCalendars(0))
81     Test.MethodTested("getUniqueID()", bOK)
82 
83     Test.StartMethod("loadCalendar()")
84     bOK = true
85     oObj.loadCalendar(allCalendars(0), oLocale)
86     bOK = bOK AND NOT isNULL(oObj.getLoadedCalendar())
87     Test.MethodTested("loadCalendar()", bOK)
88 
89     Test.StartMethod("getLoadedCalendar()")
90     bOK = true
91     oCalendar = oObj.getLoadedCalendar()
92     Out.Log("Loaded calendar's name is '" + oCalendar.Name + "'")
93     bOK = bOK AND NOT isNULL(oCalendar)
94     Test.MethodTested("getLoadedCalendar()", bOK)
95 
96     Test.StartMethod("setDateTime()")
97     Test.StartMethod("getDateTime()")
98     bOK = true
99     oObj.setDateTime(12345.25)
100     dDateTime = oObj.getDateTime()
101     bOK = bOK AND dDateTime = 12345.25
102     Out.Log("Expected: 12345,25; Actual: " + dDateTime)
103     Test.MethodTested("setDateTime()", bOK)
104     Test.MethodTested("getDateTime()", bOK)
105 
106     Test.StartMethod("getFirstDayOfWeek()")
107     Test.StartMethod("setFirstDayOfWeek()")
108     bOK = true
109     oObj.setFirstDayOfWeek(com.sun.star.i18n.Weekdays.SATURDAY)
110     Out.Log("Expected: " + com.sun.star.i18n.Weekdays.SATURDAY + ", Actual: " + oObj.getFirstDayOfWeek())
111     bOK = bOK AND oObj.getFirstDayOfWeek() = com.sun.star.i18n.Weekdays.SATURDAY
112     oObj.setFirstDayOfWeek(com.sun.star.i18n.Weekdays.SUNDAY)
113     Out.Log("Expected: " + com.sun.star.i18n.Weekdays.SUNDAY + ", Actual: " + oObj.getFirstDayOfWeek())
114     bOK = bOK AND oObj.getFirstDayOfWeek() = com.sun.star.i18n.Weekdays.SUNDAY
115 
116     Test.MethodTested("getFirstDayOfWeek()", bOK)
117     Test.MethodTested("setFirstDayOfWeek()", bOK)
118 
119     Test.StartMethod("setValue()")
120     Test.StartMethod("getValue()")
121     bOK = true
122     bOK = bOK AND TestValue(1, com.sun.star.i18n.Months.JANUARY, 2001, com.sun.star.i18n.WeekDays.MONDAY, 1, 1)
123     '1.01.2001 - Monday, 1-st week of month, 1-st week of year
124     bOK = bOK AND TestValue(12, com.sun.star.i18n.Months.JULY, 2001, com.sun.star.i18n.WeekDays.THURSDAY, 2, 28)
125     '12.07.2001 - Thursday, 2-nd week of month, 28-st week of year
126 
127     Test.MethodTested("setValue()", bOK)
128     Test.MethodTested("getValue()", bOK)
129 
130     Test.StartMethod("addValue()")
131     bOK = true
132 
133     bOK = bOK AND TestAddValue("DST_OFFSET", com.sun.star.i18n.CalendarFieldIndex.DST_OFFSET, 1, 0)
134     bOK = bOK AND TestAddValue("DAY_OF_MONTH", com.sun.star.i18n.CalendarFieldIndex.DAY_OF_MONTH, 1, 0)
135     bOK = bOK AND TestAddValue("MONTH", com.sun.star.i18n.CalendarFieldIndex.MONTH, 3, 12)
136     bOK = bOK AND TestAddValue("YEAR", com.sun.star.i18n.CalendarFieldIndex.YEAR, -1, 0)
137     bOK = bOK AND TestAddValue("HOUR", com.sun.star.i18n.CalendarFieldIndex.HOUR, 7, 24)
138     bOK = bOK AND TestAddValue("MINUTE", com.sun.star.i18n.CalendarFieldIndex.MINUTE, 31, 60)
139     bOK = bOK AND TestAddValue("SECOND", com.sun.star.i18n.CalendarFieldIndex.SECOND, 13, 60)
140     bOK = bOK AND TestAddValue("MILLISECOND", com.sun.star.i18n.CalendarFieldIndex.MILLISECOND, 67, 1000)
141     bOK = bOK AND TestAddValue("ERA", com.sun.star.i18n.CalendarFieldIndex.ERA, -1, 0)
142 
143     Test.MethodTested("addValue()", bOK)
144 
145     Test.StartMethod("getNumberOfMonthsInYear()")
146     bOK = true
147     aValue = oObj.getNumberOfMonthsInYear()
148     Out.Log("There are " + aValue + " months in year")
149     bOK = bOK AND aValue = 12
150     Test.MethodTested("getNumberOfMonthsInYear()", bOK)
151 
152     Test.StartMethod("getNumberOfDaysInWeek()")
153     bOK = true
154     aValue = oObj.getNumberOfDaysInWeek()
155     Out.Log("There are " + aValue + " days in week")
156     bOK = bOK AND aValue = 7
157     Test.MethodTested("getNumberOfDaysInWeek()", bOK)
158 
159     Test.StartMethod("getMinimumNumberOfDaysForFirstWeek()")
160     bOK = true
161     aValue = oObj.getMinimumNumberOfDaysForFirstWeek()
162     Out.Log("MinimumNumberOfDaysForFirstWeek = " + aValue)
163     bOK = bOK AND aValue &gt; 0 AND aValue &lt; 8
164     Test.MethodTested("getMinimumNumberOfDaysForFirstWeek()", bOK)
165 
166     Test.StartMethod("setMinimumNumberOfDaysForFirstWeek()")
167     bOK = true
168     oObj.setMinimumNumberOfDaysForFirstWeek(211)
169     aValue = oObj.getMinimumNumberOfDaysForFirstWeek()
170     Out.Log("MinimumNumberOfDaysForFirstWeek = " + aValue)
171     bOK = bOK AND aValue &gt; 0 AND aValue &lt; 8
172     Test.MethodTested("setMinimumNumberOfDaysForFirstWeek()", bOK)
173 
174     Test.StartMethod("getMonths()")
175     bOK = true
176     Dim allMonths As Variant
177     Dim cAllMonths As String
178     allMonths = oObj.getMonths()
179     Out.Log("Returned " + ubound(allMonths) + 1 + " months.")
180     bOK = bOK AND ubound(allMonths) + 1= oObj.getNumberOfMonthsInYear()
181     if (bOK) then
182         cAllMonths = ""
183         for i = 0 to ubound(allMonths)
184             cAllMonths = cAllMonths + allMonths(i).FullName + ", "
185         next i
186         Out.Log("Months: " + cAllMonths)
187     end if
188 
189     Test.MethodTested("getMonths()", bOK)
190 
191     Test.StartMethod("getDays()")
192     bOK = true
193     Dim allDays As Variant
194     Dim cAllDays As String
195     allDays = oObj.getDays()
196     Out.Log("Returned " + ubound(allMonths) + 1 + " days.")
197     bOK = bOK AND ubound(allDays) + 1= oObj.getNumberOfDaysInWeek()
198     if (bOK) then
199         cAllDays = ""
200         for i = 0 to ubound(allDays)
201             cAllDays = cAllDays + allDays(i).FullName + ", "
202         next i
203         Out.Log("Days: " + cAllDays)
204     end if
205     Test.MethodTested("getDays()", bOK)
206 
207     Test.StartMethod("getDisplayName()")
208     bOK = true
209     Dim cDisplayName As String
210     cDisplayName = oObj.getDisplayName(com.sun.star.i18n.CalendarDisplayIndex.MONTH, com.sun.star.i18n.Months.JANUARY, 1)
211     Out.Log("Full name for JANUARY is: " + cDisplayName)
212     bOK = bOK AND cDisplayName &lt;&gt; ""
213     Test.MethodTested("getDisplayName()", bOK)
214 
215     Test.StartMethod("isValid()")
216     bOK = true
217 
218     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.DAY_OF_MONTH, 30)
219     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.MONTH, com.sun.star.i18n.Months.FEBURARY)
220     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.YEAR, 2001)
221     Out.Log("isValid() = " + oObj.isValid())
222     bOK = bOK AND NOT oObj.isValid()
223 
224     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.DAY_OF_MONTH, 27)
225     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.MONTH, com.sun.star.i18n.Months.FEBURARY)
226     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.YEAR, 2001)
227     Out.Log("isValid() = " + oObj.isValid())
228     bOK = bOK AND oObj.isValid()
229 
230     Test.MethodTested("isValid()", bOK)
231 
232 Exit Sub
233 ErrHndl:
234     Test.Exception()
235     bOK = false
236     resume next
237 End Sub
238 
239 Function TestValue(_Day As Integer, _Month As Integer, _Year As Integer, _
240                    _Day_of_week As Integer, _Week_of_month As Integer, _Week_of_year As Integer) As Boolean
241 
242     Dim bOK As Boolean
243     Dim aDay As Integer, aMonth As Integer, aYear As Integer
244     Dim aDay_of_week As Integer, aWeek_of_Month As Integer, aWeek_of_year As Integer
245 
246     bOK = true
247 
248     Out.Log("Set date to " + _Day + "." + _Month + "." + _Year + ";")
249 
250     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.DAY_OF_MONTH, _Day)
251     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.MONTH, _Month)
252     oObj.setValue(com.sun.star.i18n.CalendarFieldIndex.YEAR, _Year)
253 
254     aDay = oObj.getValue(com.sun.star.i18n.CalendarFieldIndex.DAY_OF_MONTH)
255     aMonth = oObj.getValue(com.sun.star.i18n.CalendarFieldIndex.MONTH)
256     aYear = oObj.getValue(com.sun.star.i18n.CalendarFieldIndex.YEAR)
257 
258     Out.Log("Now date is " + aDay + "." + aMonth + "." + aYear + ";")
259 
260     bOK = (aDay = _Day) AND (aMonth = _Month) AND (aYear = _Year)
261 
262     if (bOK) then
263         aDay_of_week = oObj.getValue(com.sun.star.i18n.CalendarFieldIndex.DAY_OF_WEEK)
264         aWeek_of_month = oObj.getValue(com.sun.star.i18n.CalendarFieldIndex.WEEK_OF_MONTH)
265         aWeek_of_year = oObj.getValue(com.sun.star.i18n.CalendarFieldIndex.WEEK_OF_YEAR)
266         Out.Log("aDay_of_week: Expected: " + _Day_of_week + ", Actual: " + aDay_of_week)
267         Out.Log("aWeek_of_month: Expected: " + _Week_of_month + ", Actual: " + aWeek_of_month)
268         Out.Log("aWeek_of_year: Expected: " + _Week_of_year + ", Actual: " + aWeek_of_year)
269         bOK = (aDay_of_week = _Day_of_week) AND (aWeek_of_month = _Week_of_month) AND (aWeek_of_year = _Week_of_year)
270     end if
271 
272     TestValue() = bOK
273 
274 Exit Function
275 ErrHndl:
276     Test.Exception()
277     TestValue() = false
278 End Function
279 
280 Function TestAddValue(valname As String, Idx As Integer, incValue As Integer, valModule As Integer) As Boolean
281     Dim aValue As Integer
282     Dim newValue As Integer
283     Dim bOK As Boolean
284 
285     aValue = oObj.getValue(idx)
286     oObj.addValue(idx, incValue)
287     newValue = oObj.getValue(idx)
288     if (valModule = 0) then
289         bOK = (newValue = (aValue + incValue))
290         Out.Log(valname + ": Expected: " + (aValue + incValue) + ", Actual: " + newValue)
291     else
292         bOK = (newValue = (aValue + incValue) mod valModule)
293         Out.Log(valname + ": Expected: " + (aValue + incValue) mod valModule + ", Actual: " + newValue)
294     end if
295     TestAddValue() = bOK
296 Exit Function
297 ErrHndl:
298     Test.Exception()
299     TestAddValue() = false
300 End Function
301 </script:module>
302