From 1397290a0e24e83663b9599d5062e0ea0bc55337 Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Tue, 16 Jul 2024 16:02:16 +0200 Subject: [PATCH] RED-9667 - Extend convert dates --- .../src/main/resources/date_formats.txt | 2 + .../v1/server/DocumineFloraTest.java | 4 ++ .../v1/server/date/DateConverterTest.java | 60 +++++++++--------- .../resources/files/dates/date_formats.pdf | Bin 49347 -> 60608 bytes 4 files changed, 37 insertions(+), 29 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/resources/date_formats.txt b/redaction-service-v1/redaction-service-server-v1/src/main/resources/date_formats.txt index 0a5a946e..f49fd7c6 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/resources/date_formats.txt +++ b/redaction-service-v1/redaction-service-server-v1/src/main/resources/date_formats.txt @@ -14,6 +14,8 @@ dd MMMM yyyy d MMMM yyyy MMMM dd, yyyy MMMM d, yyyy +MMMM, d yyyy +MMMM d,yyyy dd.MM.yyyy d.MM.yyyy yyyy/MM/dd diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/DocumineFloraTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/DocumineFloraTest.java index ae41d1f9..3e684a7a 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/DocumineFloraTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/DocumineFloraTest.java @@ -137,6 +137,10 @@ public class DocumineFloraTest extends AbstractRedactionIntegrationTest { expectedDates.add("03/08/1992"); expectedDates.add("13/08/1992"); expectedDates.add("27/02/1992"); + expectedDates.add("27/10/1989"); + expectedDates.add("07/10/1989"); + expectedDates.add("21/08/1998"); + expectedDates.add("02/08/1998"); String dates = experimentalDates.getComponentValues() .get(0).getValue(); diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/date/DateConverterTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/date/DateConverterTest.java index c74123d7..21ac9504 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/date/DateConverterTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/date/DateConverterTest.java @@ -1,12 +1,11 @@ package com.iqser.red.service.redaction.v1.server.date; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Optional; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; import com.iqser.red.service.redaction.v1.server.utils.DateConverter; @@ -17,33 +16,36 @@ public class DateConverterTest { public void testDateConverter() { List goldenStandardDates = Arrays.asList("3 Jun 08", - "09. Apr 09", - "07-Sep-2010", - "26-FEB-2008", - "30-APR-2008", - "30-apr-2008", - "30-Apr-2008", - "1 Apr 08", - "26-FEB-2008", - "19-MAR-2008", - "1 Apr 08", - "27-MAR-2008", - "06-MAY-2008", - "3 Apr 08", - "12-MAR-2008", - "08-APR-2008", - "1 Apr 08", - "4 Apr 08", - "13 November 2017 (animal 1)", - "16 November 2017 (animal 1)", - "27 March 2018 (animal 1 - 5000 mg/kg bw)", - "10 April 2018 (animal 1 - 5000 mg/kg bw)", - "13 November 2017 (animal 1)", - "16 November 2017 (animal 1)", - "28 March 2018 (animal 1 - 5000 mg/kg bw)", - "28 March 2018 (animal1 - 5000 mg/kg bw)", - "28 August 2018 (animal 1)", - "31 August 2018 (animal 1)"); + "09. Apr 09", + "07-Sep-2010", + "26-FEB-2008", + "30-APR-2008", + "30-apr-2008", + "30-Apr-2008", + "1 Apr 08", + "26-FEB-2008", + "19-MAR-2008", + "1 Apr 08", + "27-MAR-2008", + "06-MAY-2008", + "3 Apr 08", + "12-MAR-2008", + "08-APR-2008", + "1 Apr 08", + "4 Apr 08", + "13 November 2017 (animal 1)", + "16 November 2017 (animal 1)", + "27 March 2018 (animal 1 - 5000 mg/kg bw)", + "10 April 2018 (animal 1 - 5000 mg/kg bw)", + "13 November 2017 (animal 1)", + "16 November 2017 (animal 1)", + "28 March 2018 (animal 1 - 5000 mg/kg bw)", + "28 March 2018 (animal1 - 5000 mg/kg bw)", + "28 August 2018 (animal 1)", + "October, 27 1989", + "October, 7 1989", + "August 21,1998", + "August 2,1998"); for (String dateStr : goldenStandardDates) { Optional parsedDate = DateConverter.parseDate(dateStr); diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/dates/date_formats.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/dates/date_formats.pdf index 66ad153bd6c02efa1f87d8e0924f302086d73f2f..78961722820475c9810cfb592c3e9950779e85b6 100644 GIT binary patch delta 28208 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