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) {
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<Date> {
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<Date> {
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));
}
@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