Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/util/Calendar/bug4409072.java
47182 views
1
/*
2
* Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 4409072
27
* @summary tests for set(), add(), and roll() with various week parameters.
28
* @library /java/text/testlib
29
*/
30
31
import java.util.*;
32
import static java.util.Calendar.*;
33
34
public class bug4409072 extends IntlTest {
35
36
public static void main(String[] args) throws Exception {
37
new bug4409072().run(args);
38
}
39
40
/* Confirm some public methods' behavior in Calendar.
41
* (e.g. add(), roll(), set())
42
*/
43
public void Test4409072() {
44
if (Locale.getDefault().equals(new Locale("th", "TH"))) {
45
return;
46
}
47
48
Locale savedLocale = Locale.getDefault();
49
TimeZone savedTZ = TimeZone.getDefault();
50
try {
51
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
52
testSet();
53
testAdd();
54
testRoll();
55
} finally {
56
TimeZone.setDefault(savedTZ);
57
Locale.setDefault(savedLocale);
58
}
59
}
60
61
/*
62
* Golden data for set() test
63
*/
64
static final int[][][] resultWOMForSetTest = {
65
{ /* For year1998 */
66
/* Min = 1 2 3 4 5 6 7 */
67
/* Sun */ {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11,11}, {11,11},
68
/* Mon */ {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11,11},
69
/* Tue */ {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4},
70
/* Wed */ {10,27}, {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4},
71
/* Thu */ {10,27}, {10,27}, {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11, 4},
72
/* Fri */ {10,27}, {10,27}, {10,27}, {11, 4}, {11, 4}, {11, 4}, {11, 4},
73
/* Sat */ {11, 4}, {11, 4}, {11, 4}, {11, 4}, {11,11}, {11,11}, {11,11},
74
},
75
{ /* For year1999 */
76
/* Min = 1 2 3 4 5 6 7 */
77
/* Sun */ {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11,10}, {11,10}, {11,10},
78
/* Mon */ {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11,10}, {11,10},
79
/* Tue */ {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11,10},
80
/* Wed */ {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3},
81
/* Thu */ {10,26}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3},
82
/* Fri */ {10,26}, {10,26}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3},
83
/* Sat */ {11, 3}, {11, 3}, {11, 3}, {11,10}, {11,10}, {11,10}, {11,10},
84
},
85
{ /* For year2000 */
86
/* Min = 1 2 3 4 5 6 7 */
87
/* Sun */ {11, 1}, {11, 1}, {11, 8}, {11, 8}, {11, 8}, {11, 8}, {11, 8},
88
/* Mon */ {11, 1}, {11, 1}, {11, 1}, {11, 8}, {11, 8}, {11, 8}, {11, 8},
89
/* Tue */ {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 8}, {11, 8}, {11, 8},
90
/* Wed */ {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 8}, {11, 8},
91
/* Thu */ {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 8},
92
/* Fri */ {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1},
93
/* Sat */ {11, 1}, {11, 8}, {11, 8}, {11, 8}, {11, 8}, {11, 8}, {11, 8},
94
},
95
{ /* For year2001 */
96
/* Min = 1 2 3 4 5 6 7 */
97
/* Sun */ {10,30}, {11, 7}, {11, 7}, {11, 7}, {11, 7}, {11, 7}, {11, 7},
98
/* Mon */ {10,30}, {10,30}, {11, 7}, {11, 7}, {11, 7}, {11, 7}, {11, 7},
99
/* Tue */ {10,30}, {10,30}, {10,30}, {11, 7}, {11, 7}, {11, 7}, {11, 7},
100
/* Wed */ {10,30}, {10,30}, {10,30}, {10,30}, {11, 7}, {11, 7}, {11, 7},
101
/* Thu */ {10,30}, {10,30}, {10,30}, {10,30}, {10,30}, {11, 7}, {11, 7},
102
/* Fri */ {10,30}, {10,30}, {10,30}, {10,30}, {10,30}, {10,30}, {11, 7},
103
/* Sat */ {11, 7}, {11, 7}, {11, 7}, {11, 7}, {11, 7}, {11, 7}, {11, 7},
104
},
105
{ /* For year2002 */
106
/* Min = 1 2 3 4 5 6 7 */
107
/* Sun */ {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11, 6},
108
/* Mon */ {10,29}, {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11, 6},
109
/* Tue */ {10,29}, {10,29}, {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11, 6},
110
/* Wed */ {10,29}, {10,29}, {10,29}, {11, 6}, {11, 6}, {11, 6}, {11, 6},
111
/* Thu */ {10,29}, {10,29}, {10,29}, {10,29}, {11, 6}, {11, 6}, {11, 6},
112
/* Fri */ {10,29}, {10,29}, {10,29}, {10,29}, {10,29}, {11, 6}, {11, 6},
113
/* Sat */ {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11, 6}, {11,13},
114
},
115
{ /* For year2003 */
116
/* Min = 1 2 3 4 5 6 7 */
117
/* Sun */ {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11,12},
118
/* Mon */ {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5},
119
/* Tue */ {10,28}, {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5},
120
/* Wed */ {10,28}, {10,28}, {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5},
121
/* Thu */ {10,28}, {10,28}, {10,28}, {11, 5}, {11, 5}, {11, 5}, {11, 5},
122
/* Fri */ {10,28}, {10,28}, {10,28}, {10,28}, {11, 5}, {11, 5}, {11, 5},
123
/* Sat */ {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11, 5}, {11,12}, {11,12},
124
},
125
{ /* For year2004 */
126
/* Min = 1 2 3 4 5 6 7 */
127
/* Sun */ {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11,10}, {11,10}, {11,10},
128
/* Mon */ {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11,10}, {11,10},
129
/* Tue */ {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11,10},
130
/* Wed */ {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3},
131
/* Thu */ {10,26}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3},
132
/* Fri */ {10,26}, {10,26}, {11, 3}, {11, 3}, {11, 3}, {11, 3}, {11, 3},
133
/* Sat */ {11, 3}, {11, 3}, {11, 3}, {11,10}, {11,10}, {11,10}, {11,10},
134
},
135
{ /* For year2005 */
136
/* Min = 1 2 3 4 5 6 7 */
137
/* Sun */ {11, 2}, {11, 2}, {11, 2}, {11, 9}, {11, 9}, {11, 9}, {11, 9},
138
/* Mon */ {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 9}, {11, 9}, {11, 9},
139
/* Tue */ {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 9}, {11, 9},
140
/* Wed */ {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 9},
141
/* Thu */ {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 2},
142
/* Fri */ {10,25}, {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 2}, {11, 2},
143
/* Sat */ {11, 2}, {11, 2}, {11, 9}, {11, 9}, {11, 9}, {11, 9}, {11, 9},
144
},
145
{ /* For year2006 */
146
/* Min = 1 2 3 4 5 6 7 */
147
/* Sun */ {11, 1}, {11, 1}, {11, 8}, {11, 8}, {11, 8}, {11, 8}, {11, 8},
148
/* Mon */ {11, 1}, {11, 1}, {11, 1}, {11, 8}, {11, 8}, {11, 8}, {11, 8},
149
/* Tue */ {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 8}, {11, 8}, {11, 8},
150
/* Wed */ {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 8}, {11, 8},
151
/* Thu */ {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 8},
152
/* Fri */ {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1}, {11, 1},
153
/* Sat */ {11, 1}, {11, 8}, {11, 8}, {11, 8}, {11, 8}, {11, 8}, {11, 8},
154
},
155
};
156
157
static final int[][][] resultWOYForSetTest1 = {
158
{ /* For year1998 */
159
/* FirstDayOfWeek = Sunday */
160
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2}, {1998, 0, 9},
161
{1998, 0, 9}, {1998, 0, 9}, {1998, 0, 9},
162
/* FirstDayOfWeek = Monday */
163
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2},
164
{1998, 0, 9}, {1998, 0, 9}, {1998, 0, 9},
165
/* FirstDayOfWeek = Tuesday */
166
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2},
167
{1998, 0, 2}, {1998, 0, 9}, {1998, 0, 9},
168
/* FirstDayOfWeek = Wednesday */
169
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2},
170
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 9},
171
/* FirstDayOfWeek = Thursday */
172
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2},
173
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2},
174
/* FirstDayOfWeek = Friday */
175
{1997,11,26}, {1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2},
176
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 2},
177
/* FirstDayOfWeek = Saturday */
178
{1998, 0, 2}, {1998, 0, 2}, {1998, 0, 9}, {1998, 0, 9},
179
{1998, 0, 9}, {1998, 0, 9}, {1998, 0, 9},
180
},
181
{ /* For year1999 */
182
/* FirstDayOfWeek = Sunday */
183
{1999, 0, 1}, {1999, 0, 1}, {1999, 0, 8}, {1999, 0, 8},
184
{1999, 0, 8}, {1999, 0, 8}, {1999, 0, 8},
185
/* FirstDayOfWeek = Monday */
186
{1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1}, {1999, 0, 8},
187
{1999, 0, 8}, {1999, 0, 8}, {1999, 0, 8},
188
/* FirstDayOfWeek = Tuesday */
189
{1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1},
190
{1999, 0, 8}, {1999, 0, 8}, {1999, 0, 8},
191
/* FirstDayOfWeek = Wednesday */
192
{1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1},
193
{1999, 0, 1}, {1999, 0, 8}, {1999, 0, 8},
194
/* FirstDayOfWeek = Thursday */
195
{1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1},
196
{1999, 0, 1}, {1999, 0, 1}, {1999, 0, 8},
197
/* FirstDayOfWeek = Friday */
198
{1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1},
199
{1999, 0, 1}, {1999, 0, 1}, {1999, 0, 1},
200
/* FirstDayOfWeek = Saturday */
201
{1999, 0, 1}, {1999, 0, 8}, {1999, 0, 8}, {1999, 0, 8},
202
{1999, 0, 8}, {1999, 0, 8}, {1999, 0, 8},
203
},
204
{ /* For year2000 */
205
/* FirstDayOfWeek = Sunday */
206
{1999,11,31}, {2000, 0, 7}, {2000, 0, 7}, {2000, 0, 7},
207
{2000, 0, 7}, {2000, 0, 7}, {2000, 0, 7},
208
/* FirstDayOfWeek = Monday */
209
{1999,11,31}, {1999,11,31}, {2000, 0, 7}, {2000, 0, 7},
210
{2000, 0, 7}, {2000, 0, 7}, {2000, 0, 7},
211
/* FirstDayOfWeek = Tuesday */
212
{1999,11,31}, {1999,11,31}, {1999,11,31}, {2000, 0, 7},
213
{2000, 0, 7}, {2000, 0, 7}, {2000, 0, 7},
214
/* FirstDayOfWeek = Wednesday */
215
{1999,11,31}, {1999,11,31}, {1999,11,31}, {1999,11,31},
216
{2000, 0, 7}, {2000, 0, 7}, {2000, 0, 7},
217
/* FirstDayOfWeek = Thursday */
218
{1999,11,31}, {1999,11,31}, {1999,11,31}, {1999,11,31},
219
{1999,11,31}, {2000, 0, 7}, {2000, 0, 7},
220
/* FirstDayOfWeek = Friday */
221
{1999,11,31}, {1999,11,31}, {1999,11,31}, {1999,11,31},
222
{1999,11,31}, {1999,11,31}, {2000, 0, 7},
223
/* FirstDayOfWeek = Saturday */
224
{2000, 0, 7}, {2000, 0, 7}, {2000, 0, 7}, {2000, 0, 7},
225
{2000, 0, 7}, {2000, 0, 7}, {2000, 0, 7},
226
},
227
{ /* For year2001 */
228
/* FirstDayOfWeek = Sunday */
229
{2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
230
{2001, 0, 5}, {2001, 0, 5}, {2001, 0,12},
231
/* FirstDayOfWeek = Monday */
232
{2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
233
{2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
234
/* FirstDayOfWeek = Tuesday */
235
{2000,11,29}, {2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
236
{2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
237
/* FirstDayOfWeek = Wednesday */
238
{2000,11,29}, {2000,11,29}, {2001, 0, 5}, {2001, 0, 5},
239
{2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
240
/* FirstDayOfWeek = Thursday */
241
{2000,11,29}, {2000,11,29}, {2000,11,29}, {2001, 0, 5},
242
{2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
243
/* FirstDayOfWeek = Friday */
244
{2000,11,29}, {2000,11,29}, {2000,11,29}, {2000,11,29},
245
{2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
246
/* FirstDayOfWeek = Saturday */
247
{2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5}, {2001, 0, 5},
248
{2001, 0, 5}, {2001, 0,12}, {2001, 0,12},
249
},
250
{ /* For year2002 */
251
/* FirstDayOfWeek = Sunday */
252
{2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
253
{2002, 0, 4}, {2002, 0,11}, {2002, 0,11},
254
/* FirstDayOfWeek = Monday */
255
{2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
256
{2002, 0, 4}, {2002, 0, 4}, {2002, 0,11},
257
/* FirstDayOfWeek = Tuesday */
258
{2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
259
{2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
260
/* FirstDayOfWeek = Wednesday */
261
{2001,11,28}, {2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
262
{2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
263
/* FirstDayOfWeek = Thursday */
264
{2001,11,28}, {2001,11,28}, {2002, 0, 4}, {2002, 0, 4},
265
{2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
266
/* FirstDayOfWeek = Friday */
267
{2001,11,28}, {2001,11,28}, {2001,11,28}, {2002, 0, 4},
268
{2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
269
/* FirstDayOfWeek = Saturday */
270
{2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4}, {2002, 0, 4},
271
{2002, 0,11}, {2002, 0,11}, {2002, 0,11},
272
},
273
{ /* For year2003 */
274
/* FirstDayOfWeek = Sunday */
275
{2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3},
276
{2003, 0,10}, {2003, 0,10}, {2003, 0,10},
277
/* FirstDayOfWeek = Monday */
278
{2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3},
279
{2003, 0, 3}, {2003, 0,10}, {2003, 0,10},
280
/* FirstDayOfWeek = Tuesday */
281
{2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3},
282
{2003, 0, 3}, {2003, 0, 3}, {2003, 0,10},
283
/* FirstDayOfWeek = Wednesday */
284
{2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3},
285
{2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3},
286
/* FirstDayOfWeek = Thursday */
287
{2002,11,27}, {2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3},
288
{2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3},
289
/* FirstDayOfWeek = Friday */
290
{2002,11,27}, {2002,11,27}, {2003, 0, 3}, {2003, 0, 3},
291
{2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3},
292
/* FirstDayOfWeek = Saturday */
293
{2003, 0, 3}, {2003, 0, 3}, {2003, 0, 3}, {2003, 0,10},
294
{2003, 0,10}, {2003, 0,10}, {2003, 0,10},
295
},
296
{ /* For year2004 */
297
/* FirstDayOfWeek = Sunday */
298
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2}, {2004, 0, 9},
299
{2004, 0, 9}, {2004, 0, 9}, {2004, 0, 9},
300
/* FirstDayOfWeek = Monday */
301
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2},
302
{2004, 0, 9}, {2004, 0, 9}, {2004, 0, 9},
303
/* FirstDayOfWeek = Tuesday */
304
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2},
305
{2004, 0, 2}, {2004, 0, 9}, {2004, 0, 9},
306
/* FirstDayOfWeek = Wednesday */
307
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2},
308
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 9},
309
/* FirstDayOfWeek = Thursday */
310
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2},
311
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2},
312
/* FirstDayOfWeek = Friday */
313
{2003,11,26}, {2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2},
314
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 2},
315
/* FirstDayOfWeek = Saturday */
316
{2004, 0, 2}, {2004, 0, 2}, {2004, 0, 9}, {2004, 0, 9},
317
{2004, 0, 9}, {2004, 0, 9}, {2004, 0, 9},
318
},
319
{ /* For year2005 */
320
/* FirstDayOfWeek = Sunday */
321
{2004,11,31}, {2005, 0, 7}, {2005, 0, 7}, {2005, 0, 7},
322
{2005, 0, 7}, {2005, 0, 7}, {2005, 0, 7},
323
/* FirstDayOfWeek = Monday */
324
{2004,11,31}, {2004,11,31}, {2005, 0, 7}, {2005, 0, 7},
325
{2005, 0, 7}, {2005, 0, 7}, {2005, 0, 7},
326
/* FirstDayOfWeek = Tuesday */
327
{2004,11,31}, {2004,11,31}, {2004,11,31}, {2005, 0, 7},
328
{2005, 0, 7}, {2005, 0, 7}, {2005, 0, 7},
329
/* FirstDayOfWeek = Wednesday */
330
{2004,11,31}, {2004,11,31}, {2004,11,31}, {2004,11,31},
331
{2005, 0, 7}, {2005, 0, 7}, {2005, 0, 7},
332
/* FirstDayOfWeek = Thursday */
333
{2004,11,31}, {2004,11,31}, {2004,11,31}, {2004,11,31},
334
{2004,11,31}, {2005, 0, 7}, {2005, 0, 7},
335
/* FirstDayOfWeek = Friday */
336
{2004,11,31}, {2004,11,31}, {2004,11,31}, {2004,11,31},
337
{2004,11,31}, {2004,11,31}, {2005, 0, 7},
338
/* FirstDayOfWeek = Saturday */
339
{2005, 0, 7}, {2005, 0, 7}, {2005, 0, 7}, {2005, 0, 7},
340
{2005, 0, 7}, {2005, 0, 7}, {2005, 0, 7},
341
},
342
{ /* For year2006 */
343
/* FirstDayOfWeek = Sunday */
344
{2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6},
345
{2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6},
346
/* FirstDayOfWeek = Monday */
347
{2005,11,30}, {2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6},
348
{2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6},
349
/* FirstDayOfWeek = Tuesday */
350
{2005,11,30}, {2005,11,30}, {2006, 0, 6}, {2006, 0, 6},
351
{2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6},
352
/* FirstDayOfWeek = Wednesday */
353
{2005,11,30}, {2005,11,30}, {2005,11,30}, {2006, 0, 6},
354
{2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6},
355
/* FirstDayOfWeek = Thursday */
356
{2005,11,30}, {2005,11,30}, {2005,11,30}, {2005,11,30},
357
{2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6},
358
/* FirstDayOfWeek = Friday */
359
{2005,11,30}, {2005,11,30}, {2005,11,30}, {2005,11,30},
360
{2005,11,30}, {2006, 0, 6}, {2006, 0, 6},
361
/* FirstDayOfWeek = Saturday */
362
{2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6}, {2006, 0, 6},
363
{2006, 0, 6}, {2006, 0, 6}, {2006, 0,13},
364
}
365
};
366
367
static final int[][] resultWOYForSetTest2 = {
368
/* Min = 1 2 3 4 5 6 7 */
369
/* Sun */ {4,25}, {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1},
370
/* Mon */ {4,25}, {4,25}, {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1},
371
/* Tue */ {4,25}, {4,25}, {4,25}, {5, 1}, {5, 1}, {5, 1}, {5, 1},
372
/* Wed */ {4,25}, {4,25}, {4,25}, {4,25}, {5, 1}, {5, 1}, {5, 1},
373
/* Thu */ {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 8}, {5, 8},
374
/* Fri */ {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 8},
375
/* Sat */ {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1}, {5, 1},
376
};
377
378
/**
379
* Test for set()
380
*/
381
void testSet() {
382
boolean noerror = true;
383
Calendar cal = Calendar.getInstance();
384
int sYear=1998;
385
int eYear=2006;
386
387
// Loop for FirstDayOfWeek: SUNDAY..SATURDAY
388
for (int dow = SUNDAY; dow <= SATURDAY; dow++) {
389
390
// Loop for MinimalDaysInFirstWeek: 1..7
391
for (int minDow = 1; minDow <= 7; minDow++) {
392
int index = (dow-1)*7 + (minDow-1);
393
394
cal.clear();
395
cal.setLenient(true);
396
cal.setMinimalDaysInFirstWeek(minDow);
397
cal.setFirstDayOfWeek(dow);
398
cal.set(YEAR, 2005);
399
cal.set(DAY_OF_WEEK, WEDNESDAY);
400
cal.set(WEEK_OF_YEAR, 22);
401
402
int y = 2005;
403
int m = resultWOYForSetTest2[index][0];
404
int d = resultWOYForSetTest2[index][1];
405
int year = cal.get(YEAR);
406
int month = cal.get(MONTH);
407
int date = cal.get(DATE);
408
409
if (cal.get(WEEK_OF_YEAR) != 22) {
410
noerror = false;
411
errln("Failed : set(WEEK_OF_YEAR=22)" +
412
" *** get(WEEK_OF_YEAR=" +
413
cal.get(WEEK_OF_YEAR) + ")" +
414
", got " + (month+1)+"/"+date+"/"+year +
415
", expected " + (m+1)+"/"+d+"/"+2005 +
416
", MinFirstDOW=" + minDow +
417
", FirstDOW=" + dow);
418
} else if ((year != y) || (month != m) || (date != d)) {
419
noerror = false;
420
errln("Failed : set(WEEK_OF_YEAR=22)" +
421
" got " + (month+1)+"/"+date+"/"+year +
422
", expected " + (m+1)+"/"+d+"/"+y +
423
", MinFirstDOW=" + minDow +
424
", FirstDOW=" + dow);
425
}
426
427
for (int targetYear = sYear; targetYear<= eYear; targetYear++) {
428
cal.clear();
429
cal.setLenient(true);
430
cal.setMinimalDaysInFirstWeek(minDow);
431
cal.setFirstDayOfWeek(dow);
432
cal.set(YEAR, targetYear);
433
cal.set(DAY_OF_WEEK, FRIDAY);
434
cal.set(MONTH, DECEMBER);
435
cal.set(WEEK_OF_MONTH, 1);
436
437
y = targetYear;
438
m = resultWOMForSetTest[targetYear-sYear][index][0];
439
d = resultWOMForSetTest[targetYear-sYear][index][1];
440
year = cal.get(YEAR);
441
month = cal.get(MONTH);
442
date = cal.get(DATE);
443
444
if ((year != y) || (month != m) || (date != d)) {
445
noerror = false;
446
errln("Failed : set(WEEK_OF_MONTH=1)" +
447
" got " + (month+1)+"/"+date+"/"+year +
448
", expected " + (m+1)+"/"+d+"/"+y +
449
", MinFirstDOW=" + minDow +
450
", FirstDOW=" + dow);
451
}
452
453
cal.clear();
454
cal.setLenient(true);
455
cal.setMinimalDaysInFirstWeek(minDow);
456
cal.setFirstDayOfWeek(dow);
457
cal.set(YEAR, targetYear);
458
cal.set(DAY_OF_WEEK, FRIDAY);
459
cal.set(WEEK_OF_YEAR, 1);
460
461
y = resultWOYForSetTest1[targetYear-sYear][index][0];
462
m = resultWOYForSetTest1[targetYear-sYear][index][1];
463
d = resultWOYForSetTest1[targetYear-sYear][index][2];
464
year = cal.get(YEAR);
465
month = cal.get(MONTH);
466
date = cal.get(DATE);
467
468
if (cal.get(WEEK_OF_YEAR) != 1) {
469
noerror = false;
470
errln("Failed : set(WEEK_OF_YEAR=1)" +
471
" *** get(WEEK_OF_YEAR=" +
472
cal.get(WEEK_OF_YEAR) + ")" +
473
", got " + (month+1)+"/"+date+"/"+year +
474
", expected " + (m+1)+"/"+d+"/"+y +
475
", MinFirstDOW=" + minDow +
476
", FirstDOW=" + dow);
477
} else if ((year != y) || (month != m) || (date != d)) {
478
noerror = false;
479
errln("Failed : set(WEEK_OF_YEAR=1)" +
480
" got " + (month+1)+"/"+date+"/"+year +
481
", expected " + (m+1)+"/"+d+"/"+y +
482
", MinFirstDOW=" + minDow +
483
", FirstDOW=" + dow);
484
}
485
}
486
}
487
}
488
489
if (noerror) {
490
logln("Passed : set() test");
491
}
492
}
493
494
/**
495
* Test for add()
496
*/
497
void testAdd() {
498
boolean noerror = true;
499
Calendar cal = Calendar.getInstance();
500
501
// Loop for FirstDayOfWeek: SUNDAY..SATURDAY
502
for (int dow = SUNDAY; dow <= SATURDAY; dow++) {
503
504
// Loop for MinimalDaysInFirstWeek: 1..7
505
for (int minDow = 1; minDow <= 7; minDow++) {
506
int oldWOY, newWOY;
507
508
cal.clear();
509
cal.setLenient(true);
510
cal.setMinimalDaysInFirstWeek(minDow);
511
cal.setFirstDayOfWeek(dow);
512
cal.set(2005, DECEMBER, 7);
513
oldWOY = cal.get(WEEK_OF_YEAR);
514
515
for (int cnt = 0; cnt < 7; cnt++) {
516
cal.add(WEEK_OF_YEAR, 1);
517
}
518
519
int year = cal.get(YEAR);
520
int month = cal.get(MONTH);
521
int date = cal.get(DATE);
522
523
if ((year != 2006) || (month != 0) || (date != 25)) {
524
noerror = false;
525
errln("Failed : add(WEEK_OF_YEAR+1)" +
526
" got " + (month+1)+"/"+date+"/"+year +
527
", expected 1/25/2006" +
528
", MinFirstDOW=" + minDow +
529
", FirstDOW=" + dow);
530
}
531
532
for (int cnt = 0; cnt < 10; cnt++) {
533
cal.add(WEEK_OF_YEAR, -1);
534
}
535
newWOY = cal.get(WEEK_OF_YEAR);
536
537
year = cal.get(YEAR);
538
month = cal.get(MONTH);
539
date = cal.get(DATE);
540
541
if ((oldWOY - newWOY) != 3) {
542
errln("Failed : add(WEEK_OF_YEAR-1)" +
543
" got " + (month+1)+"/"+date+"/"+year +
544
", expected 11/16/2005" +
545
", MinFirstDOW=" + minDow +
546
", FirstDOW=" + dow +
547
", WEEK_OF_YEAR=" + newWOY +
548
" should be " + (oldWOY-3));
549
} else if ((year != 2005) || (month != 10) || (date != 16)) {
550
errln("Failed : add(-1)" +
551
" got " + (month+1)+"/"+date+"/"+year +
552
", expected 11/16/2005" +
553
", MinFirstDOW=" + minDow +
554
", FirstDOW=" + dow);
555
}
556
}
557
}
558
559
if (noerror) {
560
logln("Passed : add() test");
561
}
562
}
563
564
/*
565
* Golden data for roll() test
566
*/
567
static final int[] resultWOMForRollTest = {
568
/* Min = 1 2 3 4 5 6 7 */
569
/* Sun */ 1, 1, 1, 26, 26, 26, 26,
570
/* Mon */ 1, 1, 1, 1, 26, 26, 26,
571
/* Tue */ 31, 31, 31, 31, 31, 24, 24,
572
/* Wed */ 31, 31, 31, 31, 31, 31, 24,
573
/* Thu */ 31, 31, 31, 31, 31, 31, 31,
574
/* Fri */ 1, 31, 31, 31, 31, 31, 31,
575
/* Sat */ 1, 1, 31, 31, 31, 31, 31,
576
};
577
578
static final int[][] resultWOYForRollTest = {
579
/* Min = 1 2 3 4 5 6 7 */
580
/* Sun */ {0,26}, {0,26}, {0,26}, {0,26}, {0,26}, {0,26}, {0,26},
581
/* Mon */ {1, 2}, {0,26}, {0,26}, {0,26}, {0,26}, {0,26}, {0,26},
582
/* Tue */ {1, 2}, {1, 2}, {0,26}, {0,26}, {0,26}, {0,26}, {0,26},
583
/* Wed */ {1, 2}, {1, 2}, {1, 2}, {0,26}, {0,26}, {0,26}, {0,26},
584
/* Thu */ {0,26}, {0,26}, {0,26}, {0,26}, {0,26}, {1, 2}, {1, 2},
585
/* Fri */ {0,26}, {0,26}, {0,26}, {0,26}, {0,26}, {0,26}, {1, 2},
586
/* Sat */ {0,26}, {0,26}, {0,26}, {0,26}, {0,26}, {0,26}, {0,26},
587
};
588
589
/**
590
* Test for roll()
591
*/
592
void testRoll() {
593
boolean noerror = true;
594
Calendar cal = Calendar.getInstance();
595
596
// Loop for FirstDayOfWeek: SUNDAY..SATURDAY
597
for (int dow = SUNDAY; dow <= SATURDAY; dow++) {
598
599
// Loop for MinimalDaysInFirstWeek: 1..7
600
for (int minDow = 1; minDow <= 7; minDow++) {
601
int oldWOY, newWOY;
602
int index = (dow-1)*7 + (minDow-1);
603
604
cal.clear();
605
cal.setLenient(true);
606
cal.setMinimalDaysInFirstWeek(minDow);
607
cal.setFirstDayOfWeek(dow);
608
cal.set(2005, DECEMBER, 12);
609
oldWOY = cal.get(WEEK_OF_YEAR);
610
for (int cnt = 0; cnt < 2; cnt++) {
611
cal.roll(WEEK_OF_MONTH, -1);
612
}
613
int y = 2005;
614
int m = DECEMBER;
615
int d = resultWOMForRollTest[index];
616
int year = cal.get(YEAR);
617
int month = cal.get(MONTH);
618
int date = cal.get(DATE);
619
620
if ((year != y) || (month != m) || (date != d)) {
621
noerror = false;
622
errln("Failed : roll(WEEK_OF_MONTH-1)" +
623
" got " + (month+1) + "/" + date + "/" + year +
624
", expected " + (m+1) + "/" + d + "/" + y +
625
", MinFirstDOW=" + minDow +
626
", FirstDOW=" + dow);
627
}
628
629
cal.clear();
630
cal.setLenient(true);
631
cal.setMinimalDaysInFirstWeek(minDow);
632
cal.setFirstDayOfWeek(dow);
633
cal.set(2005, DECEMBER, 7);
634
oldWOY = cal.get(WEEK_OF_YEAR);
635
636
for (int cnt = 0; cnt < 7; cnt++) {
637
cal.roll(WEEK_OF_YEAR, 1);
638
}
639
640
y = 2005;
641
m = resultWOYForRollTest[index][0];
642
d = resultWOYForRollTest[index][1];
643
year = cal.get(YEAR);
644
month = cal.get(MONTH);
645
date = cal.get(DATE);
646
647
if ((year != y) || (month != m) || (date != d)) {
648
noerror = false;
649
errln("Failed : roll(WEEK_OF_YEAR+1)" +
650
" got " + (month+1) + "/" + date + "/" + year +
651
", expected " + (m+1) + "/" + d + "/" + y +
652
", MinFirstDOW=" + minDow +
653
", FirstDOW=" + dow);
654
}
655
656
for (int cnt = 0; cnt < 10; cnt++) {
657
cal.roll(WEEK_OF_YEAR, -1);
658
}
659
newWOY = cal.get(WEEK_OF_YEAR);
660
661
y = 2005;
662
m = NOVEMBER;
663
d = 16;
664
year = cal.get(YEAR);
665
month = cal.get(MONTH);
666
date = cal.get(DATE);
667
668
if ((year != y) || (month != m) || (date != d)) {
669
noerror = false;
670
errln("Failed : roll(WEEK_OF_YEAR-1)" +
671
" got " + (month+1)+"/"+date+"/"+year +
672
", expected " + (m+1)+"/"+d+"/"+y +
673
", MinFirstDOW=" + minDow +
674
", FirstDOW=" + dow);
675
}
676
}
677
}
678
679
if (noerror) {
680
logln("Passed : roll() test");
681
}
682
}
683
}
684
685