/* * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * 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 8152077 * @summary Make sure that roll() with HOUR/HOUR_OF_DAY works around standard/daylight * time transitions
*/
privatestaticvoid testRoll(TimeZone tz, int[] params, int[] sequence) {
TimeZone.setDefault(tz); for (int i = 0; i < sequence.length; i++) {
testRoll(+1, params, sequence, i);
testRoll(-1, params, sequence, i);
}
}
// amount must be 1 or -1. privatestaticvoid testRoll(int amount, int[] params, int[] sequence, int startIndex) { int year = params[0]; int month = params[1]; int dayOfMonth = params[2]; int hourOfDay = sequence[startIndex];
Calendar cal = new GregorianCalendar(year, month, dayOfMonth,
hourOfDay, 0, 0); int ampm = cal.get(AM_PM);
int length = sequence.length; int count = length * 2; int field = (length > 12) ? HOUR_OF_DAY : HOUR;
System.out.printf("roll(%s, %2d) starting from %s%n",
(field == HOUR) ? "HOUR" : "HOUR_OF_DAY", amount, cal.getTime()); for (int i = 0; i < count; i++) { int index = (amount > 0) ? (startIndex + i + 1) % length
: Math.floorMod(startIndex - i - 1, length); int expected = sequence[index]; if (field == HOUR) {
expected %= 12;
}
cal.roll(field, amount); int value = cal.get(field); if (value != expected) {
System.out.println("Unexpected field value: got=" + value
+ ", expected=" + expected);
errors++;
} if (cal.get(DAY_OF_MONTH) != dayOfMonth) {
System.out.println("DAY_OF_MONTH changed: " + dayOfMonth
+ " to " + cal.get(DAY_OF_MONTH));
} if (field == HOUR && cal.get(AM_PM) != ampm) {
System.out.println("AM_PM changed: " + ampm + " to " + cal.get(AM_PM));
errors++;
}
}
}
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.