Jelajahi Sumber

DMYParseTest

Andrew Grant 3 bulan lalu
induk
melakukan
0732d7bba1

+ 1 - 2
src/main/java/scot/carricksoftware/grantswriter/data/DMY.java

@@ -10,8 +10,7 @@ public interface DMY extends Comparable<DMY> {
 
     String toString();
 
-    @SuppressWarnings({"unused", "UnusedReturnValue"})
-    DMY parse(String string);
+    void parse(String string);
 
     @SuppressWarnings({"unused", "SameReturnValue"})
     String getDay();

+ 17 - 18
src/main/java/scot/carricksoftware/grantswriter/data/DMYImpl.java

@@ -23,53 +23,52 @@ public class DMYImpl implements DMY {
     String year;
 
     @Override
-    public DMY parse(String string) {
-        DMY dmy = new DMYImpl();
+    public void parse(String string) {
+
         String[] split = string.split("/");
 
-        checkDay(dmy, length2(split[0]));
-        checkMonth(dmy, length2(split[1]));
-        checkYear(dmy,length4(split[2]));
+        checkDay(length2(split[0]));
+        checkMonth(length2(split[1]));
+        checkYear(length4(split[2]));
 
-        return dmy;
     }
 
-    private void checkDay(DMY dmy, String s) {
+    private void checkDay(String s) {
         try {
             int num = Integer.parseInt(s);
             if (num < 1 || num > 31) {
-                dmy.setDay(null);
+                setDay(null);
             } else {
-                dmy.setDay(s);
+                setDay(s);
             }
         } catch (Exception e) {
-            dmy.setDay(null);
+            setDay(null);
         }
     }
 
-    private void checkMonth(DMY dmy, String s) {
+    private void checkMonth(String s) {
         try {
             int num = Integer.parseInt(s);
             if (num < 1 || num > 12) {
-                dmy.setMonth(null);
+                setMonth(null);
             } else {
-                dmy.setMonth(s);
+                setMonth(s);
             }
         } catch (Exception e) {
-            dmy.setDay(null);
+            setMonth(null);
         }
     }
 
-    private void checkYear(DMY dmy, String s) {
+    private void checkYear(String s) {
         try {
             int num = Integer.parseInt(s);
             if (num < 1500 || num > 2030) {
-                dmy.setYear(null);
+                setYear(null);
             } else {
-                dmy.setYear(s);
+                setYear(s);
             }
         } catch (Exception e) {
-            dmy.setDay(null);
+            setDay(null);
         }
     }
 

+ 5 - 4
src/main/java/scot/carricksoftware/grantswriter/data/TimeLineDataImpl.java

@@ -43,19 +43,20 @@ public class TimeLineDataImpl implements TimeLineData {
     public void add(List<CensusEntry> censusEntryList) {
         for (CensusEntry censusEntry : censusEntryList) {
             String key = censusEntry.getCensus().getCensusDate().label;
-            DMY dmyKey = dmy.parse(key);
-            List<String> values = timeline.get(dmyKey);
+            dmy.parse(key);
+
+            List<String> values = timeline.get(dmy);
             if (values == null) {
                 values = new ArrayList<>();
             }
             values.add( "Recorded as being at " +
                     censusEntry.getCensus().getPlace().toString());
-            timeline.put(dmyKey, values);
+            timeline.put(dmy, values);
 
             if (censusEntry.getPersonalOccupation() != null && !censusEntry.getPersonalOccupation().isEmpty()) {
                 values.add("Occupation recorded as " +
                                 censusEntry.getPersonalOccupation());
-                timeline.put(dmyKey, values);
+                timeline.put(dmy, values);
             }
             refs.add(censusEntry.getCensus().toString());
         }

+ 13 - 4
src/test/java/scot/carricksoftware/grantswriter/data/DMYCompareTest.java

@@ -18,25 +18,34 @@ class DMYCompareTest {
     void setUp() {
         dmy = new DMYImpl();
         String sunday = "25/01/1953";
-        dmy = dmy.parse(sunday);
+        dmy.parse(sunday);
     }
 
     @Test
     void equalityTest() {
+        DMY dmySunday2 = new DMYImpl();
         String sunday2 = "25/01/1953";
-        assertEquals(0, dmy.compareTo(dmy.parse(sunday2)));
+        dmySunday2.parse(sunday2);
+
+        assertEquals(0, dmy.compareTo(dmySunday2));
     }
 
     @Test
     void nextDayTest() {
         String monday = "26/01/1953";
-        assertEquals(-1, dmy.compareTo(dmy.parse(monday)));
+        DMY dmyMonday = new DMYImpl();
+        dmyMonday.parse(monday);
+
+        assertEquals(-1, dmy.compareTo(dmyMonday));
     }
 
     @Test
     void previousDayTest() {
         String saturday = "24/01/1953";
-        assertEquals(1, dmy.compareTo(dmy.parse(saturday)));
+
+        DMY dmySaturday = new DMYImpl();
+        dmySaturday.parse(saturday);
+        assertEquals(1, dmy.compareTo(dmySaturday));
     }
 
 

+ 81 - 0
src/test/java/scot/carricksoftware/grantswriter/data/DMYParseNumericTest.java

@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.data;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+class DMYParseNumericTest {
+
+    private DMY dmy;
+
+    @BeforeEach
+    void setUp() {
+        dmy = new DMYImpl();
+    }
+
+    @Test
+    void highDayTest() {
+        String input = "31/01/1953";
+        dmy.parse(input);
+        assertEquals("31", dmy.getDay());
+    }
+
+    @Test
+    void tooHighDayTest() {
+        String input = "32/01/1953";
+        dmy.parse(input);
+        assertNull(dmy.getDay());
+    }
+
+    @Test
+    void highMonthTest() {
+        String input = "31/12/1953";
+        dmy.parse(input);
+        assertEquals("12", dmy.getMonth());
+    }
+
+    @Test
+    void tooHighMonthTest() {
+        String input = "32/13/1953";
+        dmy.parse(input);
+        assertNull(dmy.getMonth());
+    }
+
+    @Test
+    void lowYearTest() {
+        String input = "31/12/1500";
+        dmy.parse(input);
+        assertEquals("1500", dmy.getYear());
+    }
+
+    @Test
+    void tooLowYearTest() {
+        String input = "32/13/1499";
+        dmy.parse(input);
+        assertNull(dmy.getYear());
+    }
+
+    @Test
+    void highYearTest() {
+        String input = "31/12/2030";
+        dmy.parse(input);
+        assertEquals("2030", dmy.getYear());
+    }
+
+    @Test
+    void tooHighYearTest() {
+        String input = "32/13/2031";
+        dmy.parse(input);
+        assertNull(dmy.getYear());
+    }
+
+
+
+}

+ 6 - 35
src/test/java/scot/carricksoftware/grantswriter/data/DMYParseTest.java

@@ -23,7 +23,7 @@ class DMYParseTest {
     @Test
     void normalTest() {
         String input = "01/02/1981";
-        dmy = dmy.parse(input);
+        dmy.parse(input);
 
         assertEquals("01", dmy.getDay());
         assertEquals("02", dmy.getMonth());
@@ -33,7 +33,7 @@ class DMYParseTest {
     @Test
     void TrimmedTest() {
         String input = "0103/0204/198106";
-        dmy = dmy.parse(input);
+        dmy.parse(input);
 
         assertEquals("01", dmy.getDay());
         assertEquals("02", dmy.getMonth());
@@ -43,60 +43,31 @@ class DMYParseTest {
     @Test
     void ShortTest() {
         String input = "1/2/3";
-        dmy = dmy.parse(input);
+        dmy.parse(input);
 
         assertNull(dmy.getDay());
         assertNull(dmy.getMonth());
         assertNull(dmy.getYear());
     }
 
-    @Test
-    void invalidNumericDayTest() {
-        String input = "33/1/1953";
-        dmy = dmy.parse(input);
-
-        assertNull(dmy.getDay());
-    }
-
     @Test
     void invalidDayTest() {
         String input = "z/1/1953";
-        dmy = dmy.parse(input);
+        dmy.parse(input);
         assertNull(dmy.getDay());
     }
 
-    @Test
-    void invalidNumericMonthTest() {
-        String input = "25/13/1953";
-        dmy = dmy.parse(input);
-        assertNull(dmy.getMonth());
-    }
-
     @Test
     void invalidMonthTest() {
         String input = "25/z/1953";
-        dmy = dmy.parse(input);
+        dmy.parse(input);
         assertNull(dmy.getMonth());
     }
 
-    @Test
-    void invalidNumericHighYearTest() {
-        String input = "25/01/2050";
-        dmy = dmy.parse(input);
-        assertNull(dmy.getYear());
-    }
-
-    @Test
-    void invalidNumericLowYearTest() {
-        String input = "25/01/25";
-        dmy = dmy.parse(input);
-        assertNull(dmy.getYear());
-    }
-
     @Test
     void invalidYearTest() {
         String input = "25/01/z";
-        dmy = dmy.parse(input);
+        dmy.parse(input);
         assertNull(dmy.getYear());
     }