/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 4267450
* @summary Unit test for week date support
*/
public class WeekDateTest {
// Week dates are in the ISO numbering for day-of-week.
static int[][][] data = {
// Calendar year-date, Week year-date
{{ 2005, 01, 01}, { 2004, 53, 6}},
{{ 2005, 01, 02}, { 2004, 53, 7}},
{{ 2005, 12, 31}, { 2005, 52, 6}},
{{ 2007, 01, 01}, { 2007, 01, 1}},
{{ 2007, 12, 30}, { 2007, 52, 7}},
{{ 2007, 12, 31}, { 2008, 01, 1}},
{{ 2008, 01, 01}, { 2008, 01, 2}},
{{ 2008, 12, 29}, { 2009, 01, 1}},
{{ 2008, 12, 31}, { 2009, 01, 3}},
{{ 2009, 01, 01}, { 2009, 01, 4}},
{{ 2009, 12, 31}, { 2009, 53, 4}},
{{ 2010, 01, 03}, { 2009, 53, 7}},
{{ 2009, 12, 31}, { 2009, 53, 4}},
{{ 2010, 01, 01}, { 2009, 53, 5}},
{{ 2010, 01, 02}, { 2009, 53, 6}},
{{ 2010, 01, 03}, { 2009, 53, 7}},
{{ 2008, 12, 28}, { 2008, 52, 7}},
{{ 2008, 12, 29}, { 2009, 01, 1}},
{{ 2008, 12, 30}, { 2009, 01, 2}},
{{ 2008, 12, 31}, { 2009, 01, 3}},
{{ 2009, 01, 01}, { 2009, 01, 4}}
};
// Data for leniency test
static final int[][][] leniencyData = {
{{ 2008, 12, 28}, { 2009, 0, 7}},
{{ 2008, 12, 21}, { 2009, -1, 7}},
{{ 2009, 1, 4}, { 2008, 53, 7}},
};
static final int[][] invalidData = {
{ 2010, -1, 1},
{ 2010, 00, 1},
{ 2010, 55, 1},
{ 2010, 03, 0},
{ 2010, 04, 8},
{ 2010, 04, 19},
{ 2010, 05, -1},
};
// Convert ISO 8601 day-of-week to Calendar.DAY_OF_WEEK.
throw new RuntimeException(s);
}
"got=%4d-W%02d-%d, expected=%4d-W%02d-%d (not ISO day-of-week)",
throw new RuntimeException(s);
}
}
// Test getWeeksInWeekYear().
// If we avoid the first week of January and the last week of
// December, getWeeksInWeekYear() and
// getActualMaximum(WEEK_OF_YEAR) values should be the same.
int n = cal.getWeeksInWeekYear();
+ "getActualMaximum(WEEK_OF_YEAR) = %d%n",
throw new RuntimeException(s);
}
if (cal.getWeeksInWeekYear() != n) {
cal.getWeeksInWeekYear(), n);
throw new RuntimeException(s);
}
if (cal.getWeeksInWeekYear() != n) {
cal.getWeeksInWeekYear(), n);
throw new RuntimeException(s);
}
}
// Test lenient mode with out of range values.
for (int[][] dates : leniencyData) {
// Convert ISO 8601 day-of-week to Calendar.DAY_OF_WEEK.
throw new RuntimeException(s);
}
}
// Test non-lenient mode
cal.setLenient(false);
for (int[] date : invalidData) {
try {
// Use the raw dayOfWeek value as invalid data
throw new RuntimeException(s);
} catch (IllegalArgumentException e) {
// OK
}
}
}
// Use GMT to avoid any surprises related DST transitions.
if (!cal.isWeekDateSupported()) {
throw new RuntimeException("Week dates not supported");
}
// Setup the ISO 8601 compatible parameters
return cal;
}
}
}