On Wed, 15 Mar 2023 19:53:07 GMT, Naoto Sato <na...@openjdk.org> wrote:
>> This PR fixes the bug which occurred when `Calendar.roll(WEEK_OF_YEAR)` >> rolled into a minimal first week with an invalid `WEEK_OF_YEAR` and >> `DAY_OF_WEEK` combo. >> >> For example, Rolling _Monday, 30 December 2019_ by 1 week produced _Monday, >> 31 December 2018_, which is incorrect. This is because `WEEK_OF_YEAR` is >> rolled from 52 to 1, and the original `DAY_OF_WEEK` is 1. However, there is >> no Monday in week 1 of 2019. This is exposed when a future method calls >> `Calendar.complete()`, which eventually calculates a `fixedDate` with the >> invalid `WEEK_OF_YEAR` and `DAY_OF_WEEK` combo. >> >> To prevent this, a check is added for rolls into week 1, which determines if >> the first week is minimal. If it is indeed minimal, then it is checked if >> `DAY_OF_WEEK` exists in that week, if not, `WEEK_OF_YEAR` must be >> incremented by one. >> >> After the fix, Rolling _Monday, 30 December 2019_ by 1 week produces >> _Monday, 7 January 2019_ > > test/jdk/java/util/Calendar/RollToMinWeek.java line 30: > >> 28: * is rolled into a minimal week 1 >> 29: * @run junit RollToMinWeek >> 30: */ > > Have you considered adding test cases into > `test/jdk/java/util/Calendar/CalendarTestScripts`, instead of creating a > single-purpose test case? Will take a look at the existing .cts files and see if it would be advantageous to add test cases there ------------- PR: https://git.openjdk.org/jdk/pull/13031