Commit 6d8f6b8

mo <mo.khan@gmail.com>
2019-07-13 22:00:56
validate day overflow
1 parent 2592097
Changed files (2)
src/Q6/WeekDay.java
@@ -8,6 +8,7 @@ public class WeekDay {
   private static final int[] MONTHS = new int[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
   public String getWeekDay(int day, int month, int year) {
+    this.ensureValidDate(year, month, day);
     return DAYS[daysSinceEpoch(day, month, year) % 7];
   }
 
@@ -32,6 +33,10 @@ public class WeekDay {
     return MONTHS[month - 1];
   }
 
+  private void ensureValidDate(int year, int month, int day) {
+    if (day > MONTHS[month - 1]) throw new IllegalArgumentException();
+  }
+
   public static void main(String[] args) {
     Scanner in = new Scanner(System.in);
 
src/Q6/WeekDayTest.java
@@ -63,4 +63,14 @@ public class WeekDayTest extends TestCase {
   public void test_getWeekDay_2100_01_31() {
     assertEquals("Sunday", subject.getWeekDay(31, 1, 2100));
   }
+
+  public void test_getWeekDay_invalid_day() {
+    boolean raised = false;
+    try {
+      subject.getWeekDay(32, 1, 2100);
+    } catch (IllegalArgumentException error) {
+      raised = true;
+    }
+    assertTrue(raised);
+  }
 }