]> WPIA git - gigi.git/commitdiff
add date-validity checker in 'CalendarUtil'
authorFelix Dörre <felix@dogcraft.de>
Thu, 26 May 2016 19:17:49 +0000 (21:17 +0200)
committerFelix Dörre <felix@dogcraft.de>
Mon, 30 May 2016 11:34:48 +0000 (13:34 +0200)
Change-Id: I41dde6b3db0f87b0c365634758830cd95f899746

src/org/cacert/gigi/output/DateSelector.java
src/org/cacert/gigi/util/CalendarUtil.java [new file with mode: 0644]
tests/org/cacert/gigi/TestCalendarUtil.java [new file with mode: 0644]
tests/org/cacert/gigi/pages/main/RegisterPageTest.java

index 22a0f620854eafb45a2f1826f62b4a8a572f1d2e..c4af9b03886a34dbc9d1e6dfc5ec34ab61896a13 100644 (file)
@@ -4,7 +4,6 @@ import java.io.PrintWriter;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Calendar;
-import java.util.GregorianCalendar;
 import java.util.Map;
 import java.util.TimeZone;
 
 import java.util.Map;
 import java.util.TimeZone;
 
@@ -14,6 +13,7 @@ import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.template.Outputable;
 import org.cacert.gigi.util.DayDate;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.template.Outputable;
 import org.cacert.gigi.util.DayDate;
+import org.cacert.gigi.util.CalendarUtil;
 import org.cacert.gigi.util.HTMLEncoder;
 
 public class DateSelector implements Outputable {
 import org.cacert.gigi.util.HTMLEncoder;
 
 public class DateSelector implements Outputable {
@@ -118,7 +118,12 @@ public class DateSelector implements Outputable {
         if ( !(1900 < year && 1 <= month && month <= 12 && 1 <= day && day <= 32)) {
             return false;
         }
         if ( !(1900 < year && 1 <= month && month <= 12 && 1 <= day && day <= 32)) {
             return false;
         }
-        return true; // TODO checkdate
+
+        if ( !CalendarUtil.isDateValid(year, month, day)) {
+            return false;
+        }
+
+        return true;
     }
 
     @Override
     }
 
     @Override
@@ -127,10 +132,7 @@ public class DateSelector implements Outputable {
     }
 
     public DayDate getDate() {
     }
 
     public DayDate getDate() {
-        Calendar gc = GregorianCalendar.getInstance();
-        gc.set(year, month - 1, day, 0, 0, 0);
-        gc.set(Calendar.MILLISECOND, 0);
-        return new DayDate(gc.getTime().getTime());
+        return CalendarUtil.getDateFromComponents(year, month, day);
     }
 
     public static SimpleDateFormat getDateFormat() {
     }
 
     public static SimpleDateFormat getDateFormat() {
diff --git a/src/org/cacert/gigi/util/CalendarUtil.java b/src/org/cacert/gigi/util/CalendarUtil.java
new file mode 100644 (file)
index 0000000..83002dc
--- /dev/null
@@ -0,0 +1,26 @@
+package org.cacert.gigi.util;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+
+public class CalendarUtil {
+
+    public static boolean isDateValid(int year, int month, int day) {
+
+        Calendar c = GregorianCalendar.getInstance();
+        c.set(year, month - 1, day);
+        return c.get(Calendar.YEAR) == year && c.get(Calendar.MONTH) == month - 1 && c.get(Calendar.DATE) == day;
+
+    }
+
+    public static DayDate getDateFromComponents(int year, int month, int day) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+        cal.setTimeInMillis(0);
+        cal.set(year, month - 1, day, 0, 0, 0);
+        Date dob = cal.getTime();
+        return new DayDate(dob.getTime());
+    }
+}
diff --git a/tests/org/cacert/gigi/TestCalendarUtil.java b/tests/org/cacert/gigi/TestCalendarUtil.java
new file mode 100644 (file)
index 0000000..87da1b0
--- /dev/null
@@ -0,0 +1,55 @@
+package org.cacert.gigi;
+
+import static org.junit.Assert.*;
+
+import java.util.Calendar;
+import java.util.TimeZone;
+
+import org.cacert.gigi.util.CalendarUtil;
+import org.cacert.gigi.util.DayDate;
+import org.junit.Test;
+
+public class TestCalendarUtil {
+
+    @Test
+    public void testGetDateFromComponents() {
+
+        Calendar now = Calendar.getInstance();
+        now.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+        int year = now.get(Calendar.YEAR);
+        int month = now.get(Calendar.MONTH) + 1;
+        int days = now.get(Calendar.DATE);
+        now.setTimeInMillis(0);
+        now.set(year, month - 1, days, 0, 0, 0);
+
+        DayDate dob = CalendarUtil.getDateFromComponents(year, month, days);
+        DayDate d = new DayDate(now.getTimeInMillis());
+
+        assertEquals(d.getTime(), dob.getTime());
+        dob = CalendarUtil.getDateFromComponents(year + 1, month, days);
+
+        assertNotEquals(d.getTime(), dob.getTime());
+
+    }
+
+    @Test
+    public void testIsDateValid() {
+        assertTrue(CalendarUtil.isDateValid(2016, 2, 28));
+        assertTrue(CalendarUtil.isDateValid(2016, 2, 29));
+        assertFalse(CalendarUtil.isDateValid(2016, 2, 30));
+        assertFalse(CalendarUtil.isDateValid(2016, 4, 31));
+
+        assertTrue(CalendarUtil.isDateValid(2000, 2, 28));
+        assertTrue(CalendarUtil.isDateValid(2000, 2, 29));
+        assertFalse(CalendarUtil.isDateValid(2000, 2, 30));
+        assertFalse(CalendarUtil.isDateValid(2000, 4, 31));
+
+        assertTrue(CalendarUtil.isDateValid(2015, 2, 28));
+        assertFalse(CalendarUtil.isDateValid(2015, 2, 29));
+        assertFalse(CalendarUtil.isDateValid(2015, 2, 30));
+        assertFalse(CalendarUtil.isDateValid(2015, 4, 31));
+
+    }
+
+}
index 695598ae7d0225d03473570bb65acd3a1d58c034..9e68c0ba77efc6ef847e8302339a8d35644bae6d 100644 (file)
@@ -95,6 +95,7 @@ public class RegisterPageTest extends ManagedTest {
     public void testInvDay() throws IOException {
         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=40&month=1&year=1910&cca_agree=1");
         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=0&month=1&year=1910&cca_agree=1");
     public void testInvDay() throws IOException {
         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=40&month=1&year=1910&cca_agree=1");
         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=0&month=1&year=1910&cca_agree=1");
+        testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=-1&month=1&year=1910&cca_agree=1");
         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=a&month=1&year=1910&cca_agree=1");
     }
 
         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=a&month=1&year=1910&cca_agree=1");
     }