diff --git a/code/tp3-date/src/main/java/fr/istic/vv/Date.java b/code/tp3-date/src/main/java/fr/istic/vv/Date.java index df51c0e..7cd18a9 100644 --- a/code/tp3-date/src/main/java/fr/istic/vv/Date.java +++ b/code/tp3-date/src/main/java/fr/istic/vv/Date.java @@ -16,7 +16,7 @@ class Date implements Comparable { } public static boolean isValidDate(int day, int month, int year) { - if (month < 1 || month > 12 || day < 1 || day > 31) + if (month < 1 || month > 12 || day < 1) return false; int max_day = max_day(month, year); if (day > max_day) @@ -24,6 +24,34 @@ class Date implements Comparable { return true; } + private static int max_day(int month, int year) { + int max_verstappen; + switch (month) { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + max_verstappen = 31; + break; + case 2: { + if (isLeapYear(year)) { + max_verstappen = 29; + break; + } else { + max_verstappen = 28; + break; + } + } + default: + max_verstappen = 30; + break; + } + return max_verstappen; + } + public static boolean isLeapYear(int year) { return year % 4 == 0; } @@ -87,37 +115,4 @@ class Date implements Comparable { return year; } - private static int max_day(int month, int year) { - int max_verstappen; - switch (month) { - case 1: - case 3: - case 5: - case 7: - case 8: - case 10: - case 12: - max_verstappen = 31; - break; - case 4: - case 6: - case 9: - case 11: - max_verstappen = 30; - break; - case 2: { - if (isLeapYear(year)) { - max_verstappen = 29; - break; - } else { - max_verstappen = 28; - break; - } - } - default: - max_verstappen = 0; - break; - } - return max_verstappen; - } } \ No newline at end of file diff --git a/code/tp3-date/src/test/java/fr/istic/vv/DateTest.java b/code/tp3-date/src/test/java/fr/istic/vv/DateTest.java index 944b3f8..5352088 100644 --- a/code/tp3-date/src/test/java/fr/istic/vv/DateTest.java +++ b/code/tp3-date/src/test/java/fr/istic/vv/DateTest.java @@ -36,6 +36,16 @@ class DateTest { assertFalse(Date.isValidDate(31, 4, 2025)); } + @Test + public void testIsValidDate_December32() { + assertFalse(Date.isValidDate(32, 4, 2025)); + } + + @Test + public void testIsValidDate_DayZero() { + assertFalse(Date.isValidDate(0, 1, 2025)); + } + @Test public void testIsValidDate_Dec31() { assertTrue(Date.isValidDate(31, 12, 1999)); @@ -46,23 +56,21 @@ class DateTest { assertFalse(Date.isValidDate(1, 0, 2025)); } + @Test + public void testIsValidDate_ValidMonth_ValidDay() { + assertTrue(Date.isValidDate(10, 10, 2025)); + } + @Test public void testIsValidDate_InvalidMonth13() { assertFalse(Date.isValidDate(1, 13, 2025)); } - @Test - public void testIsValidDate_DayZero() { - assertFalse(Date.isValidDate(0, 1, 2025)); - } // ---------- constructor ---------- @Test public void testConstructor_ValidDate() { - Date d = new Date(15, 6, 2025); - assertEquals(15, d.getDay()); - assertEquals(6, d.getMonth()); - assertEquals(2025, d.getYear()); + assertDoesNotThrow(() -> new Date(15, 6, 2025)); } @Test