From 806afc40d269670e3be4cbe7d7cb9055ab604612 Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Tue, 30 Jul 2024 11:01:04 +0300 Subject: [PATCH] RED-9770 - Extend date converter --- .../src/main/resources/date_formats.txt | 1 + .../v1/server/DocumineFloraTest.java | 6 ++++++ .../v1/server/date/DateConverterTest.java | 8 +++++++- .../resources/files/dates/date_formats.pdf | Bin 60608 -> 78312 bytes 4 files changed, 14 insertions(+), 1 deletion(-) 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 f49fd7c6..54625dd3 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 @@ -30,6 +30,7 @@ dd['.'] MMM yyyy d['.'] MMM yyyy dd['th']['st']['nd']['rd'] 'of' MMMM, yyyy d['th']['st']['nd']['rd'] 'of' MMMM, yyyy +d['st']['nd']['rd']['th'] MMMM yyyy MMMM dd['th']['st']['nd']['rd'], yyyy MMMM d['th']['st']['nd']['rd'], yyyy yyyy, MMMM 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 3e684a7a..a4f5f896 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 @@ -141,6 +141,12 @@ public class DocumineFloraTest extends AbstractRedactionIntegrationTest { expectedDates.add("07/10/1989"); expectedDates.add("21/08/1998"); expectedDates.add("02/08/1998"); + expectedDates.add("01/05/1988"); + expectedDates.add("02/06/2003"); + expectedDates.add("03/09/2005"); + expectedDates.add("06/09/2005"); + expectedDates.add("17/08/2005"); + expectedDates.add("22/08/2035"); 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 21ac9504..24175cb1 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 @@ -45,7 +45,13 @@ public class DateConverterTest { "October, 27 1989", "October, 7 1989", "August 21,1998", - "August 2,1998"); + "August 2,1998", + "1st May 1988", + "2nd June 2003", + "3rd September 2005", + "6th September 2005", + "17th August 2005", + "22nd August 2035"); 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 78961722820475c9810cfb592c3e9950779e85b6..4c076c32c60ba9232b5049d48b7f4e8c5096894e 100644 GIT binary patch delta 20818 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