RFR: 8327007: javax/swing/JSpinner/8008657/bug8008657.java fails
Prasanta Sadhukhan
psadhukhan at openjdk.org
Fri Mar 1 03:17:46 UTC 2024
On Thu, 29 Feb 2024 09:34:05 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:
> Test failed with the exception java.lang.IllegalArgumentException: (start <= value <= end) with no history of failing till date.
> Investigation shows SpinnerDateModel constructor condition is not satisfied because
> It seems it's a leap year problem that is being manifested..
>
> As per test,
> initDate Thu Feb 29 13:49:08 IST 2024 [ obtained by calendar.getTime();]
> earliestDate Tue Feb 28 13:49:08 IST 2023 [obtained by calendar.add(Calendar.YEAR, -1);]
> latestDate Wed Feb 28 13:49:08 IST 2024 [obtained by calendar.add(Calendar.YEAR, 1);]
>
> Now, as per SpinnerDateModel constructor
> earliestDate <= initDate condition is satisfied
> but
> latestDate >= initDate is not
> so [start <= value <= end](https://github.com/openjdk/jdk/blob/998d0baab0fd051c38d9fd6021628eb863b80554/src/java.desktop/share/classes/javax/swing/SpinnerDateModel.java#L185) condition fails
>
> Not sure it anything can be done in Calendar class for this but fix is done in test taking leapyear into account so that we add a day if it's a leapyear when we consecutively do Calendar.add(YEAR, -1) and Calendar.add(YEAR,1) on leapyear date of 29Feb
> Surely this just needs a one line fix
>
> diff --git a/test/jdk/javax/swing/JSpinner/8008657/bug8008657.java b/test/jdk/javax/swing/JSpinner/8008657/bug8008657.java
> index cbeb0c185bb..49918278e34 100644
> --- a/test/jdk/javax/swing/JSpinner/8008657/bug8008657.java
> +++ b/test/jdk/javax/swing/JSpinner/8008657/bug8008657.java
> @@ -137,6 +137,7 @@ static void createDateSpinner() {
> calendar.add(Calendar.YEAR, -1);
> Date earliestDate = calendar.getTime();
> calendar.add(Calendar.YEAR, 1);
> + calendar.add(Calendar.DAY_OF_MONTH, 1);
> Date latestDate = calendar.getTime();
> SpinnerModel dateModel = new SpinnerDateModel(initDate,
> earliestDate,
Yes, I did thought about that but thought should we do it irrespectively of leap year or not, so atlast I thought of doing it for leapyear only so that it doesn't affect anyother scenarios...
But if you want to add 1 day to it irrespectively and cutshort the added code, I can do it too...
-------------
PR Comment: https://git.openjdk.org/jdk/pull/18054#issuecomment-1972396322
More information about the client-libs-dev
mailing list