This commit is contained in:
Rochas
2025-12-07 20:34:42 +01:00
parent 0740268419
commit af5fb7918d
2 changed files with 45 additions and 42 deletions

View File

@@ -16,7 +16,7 @@ class Date implements Comparable<Date> {
} }
public static boolean isValidDate(int day, int month, int year) { 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; return false;
int max_day = max_day(month, year); int max_day = max_day(month, year);
if (day > max_day) if (day > max_day)
@@ -24,6 +24,34 @@ class Date implements Comparable<Date> {
return true; 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) { public static boolean isLeapYear(int year) {
return year % 4 == 0; return year % 4 == 0;
} }
@@ -87,37 +115,4 @@ class Date implements Comparable<Date> {
return year; 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;
}
} }

View File

@@ -36,6 +36,16 @@ class DateTest {
assertFalse(Date.isValidDate(31, 4, 2025)); 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 @Test
public void testIsValidDate_Dec31() { public void testIsValidDate_Dec31() {
assertTrue(Date.isValidDate(31, 12, 1999)); assertTrue(Date.isValidDate(31, 12, 1999));
@@ -46,23 +56,21 @@ class DateTest {
assertFalse(Date.isValidDate(1, 0, 2025)); assertFalse(Date.isValidDate(1, 0, 2025));
} }
@Test
public void testIsValidDate_ValidMonth_ValidDay() {
assertTrue(Date.isValidDate(10, 10, 2025));
}
@Test @Test
public void testIsValidDate_InvalidMonth13() { public void testIsValidDate_InvalidMonth13() {
assertFalse(Date.isValidDate(1, 13, 2025)); assertFalse(Date.isValidDate(1, 13, 2025));
} }
@Test
public void testIsValidDate_DayZero() {
assertFalse(Date.isValidDate(0, 1, 2025));
}
// ---------- constructor ---------- // ---------- constructor ----------
@Test @Test
public void testConstructor_ValidDate() { public void testConstructor_ValidDate() {
Date d = new Date(15, 6, 2025); assertDoesNotThrow(() -> new Date(15, 6, 2025));
assertEquals(15, d.getDay());
assertEquals(6, d.getMonth());
assertEquals(2025, d.getYear());
} }
@Test @Test