From 363938e9bf57672e7879346ae966f6d38c329660 Mon Sep 17 00:00:00 2001 From: vbot Date: Mon, 12 May 2025 14:23:39 +0200 Subject: [PATCH] Replace maven build by manual compilation --- lib_java/build-test-jar.sh | 7 ++ lib_java/dune | 6 ++ lib_java/pom.xml | 90 ------------------- .../AmbiguousComputationException.java | 0 .../src/{main/java => }/dates_calc/Date.java | 0 .../java => }/dates_calc/DatesCalcTest.java | 63 ++++++++----- .../{main/java => }/dates_calc/Period.java | 0 test/dune | 4 +- 8 files changed, 54 insertions(+), 116 deletions(-) create mode 100755 lib_java/build-test-jar.sh delete mode 100644 lib_java/pom.xml rename lib_java/src/{main/java => }/dates_calc/AmbiguousComputationException.java (100%) rename lib_java/src/{main/java => }/dates_calc/Date.java (100%) rename lib_java/src/{test/java => }/dates_calc/DatesCalcTest.java (60%) rename lib_java/src/{main/java => }/dates_calc/Period.java (100%) diff --git a/lib_java/build-test-jar.sh b/lib_java/build-test-jar.sh new file mode 100755 index 0000000..313c522 --- /dev/null +++ b/lib_java/build-test-jar.sh @@ -0,0 +1,7 @@ +#! /bin/bash + +JAVA_FILES=$(find src/dates_calc/ -name "*.java") + +javac -d classes $JAVA_FILES + +jar --main-class dates_calc/DatesCalcTest --create --file test-main.jar -C classes dates_calc diff --git a/lib_java/dune b/lib_java/dune index 7f83a96..7843d2d 100644 --- a/lib_java/dune +++ b/lib_java/dune @@ -1,3 +1,9 @@ +(rule + (target test-main.jar) + (deps (glob_files src/dates_calc/*.java)) + (action (run ./build-test-jar.sh)) +) + (install (section lib) (files diff --git a/lib_java/pom.xml b/lib_java/pom.xml deleted file mode 100644 index 0535fd9..0000000 --- a/lib_java/pom.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - 4.0.0 - - catala - dates-calc - 1.0-SNAPSHOT - - dates-calc - - http://www.example.com - - - UTF-8 - 17 - - - - - - org.junit - junit-bom - 5.11.0 - pom - import - - - - - - - org.junit.jupiter - junit-jupiter-api - test - - - - org.junit.jupiter - junit-jupiter-params - test - - - - - - - - - maven-clean-plugin - 3.4.0 - - - - maven-resources-plugin - 3.3.1 - - - maven-compiler-plugin - 3.13.0 - - - maven-surefire-plugin - 3.3.0 - - - maven-jar-plugin - 3.4.2 - - - maven-install-plugin - 3.1.2 - - - maven-deploy-plugin - 3.1.2 - - - - maven-site-plugin - 3.12.1 - - - maven-project-info-reports-plugin - 3.6.1 - - - - - diff --git a/lib_java/src/main/java/dates_calc/AmbiguousComputationException.java b/lib_java/src/dates_calc/AmbiguousComputationException.java similarity index 100% rename from lib_java/src/main/java/dates_calc/AmbiguousComputationException.java rename to lib_java/src/dates_calc/AmbiguousComputationException.java diff --git a/lib_java/src/main/java/dates_calc/Date.java b/lib_java/src/dates_calc/Date.java similarity index 100% rename from lib_java/src/main/java/dates_calc/Date.java rename to lib_java/src/dates_calc/Date.java diff --git a/lib_java/src/test/java/dates_calc/DatesCalcTest.java b/lib_java/src/dates_calc/DatesCalcTest.java similarity index 60% rename from lib_java/src/test/java/dates_calc/DatesCalcTest.java rename to lib_java/src/dates_calc/DatesCalcTest.java index cf26dc7..b81da19 100644 --- a/lib_java/src/test/java/dates_calc/DatesCalcTest.java +++ b/lib_java/src/dates_calc/DatesCalcTest.java @@ -8,12 +8,6 @@ import java.util.List; import java.util.stream.Stream; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - public class DatesCalcTest { // Helper to read CSV data, using relative path from lib_java @@ -38,25 +32,40 @@ private static List readCsv(String relativePath) throws IOException { // --- Data Providers --- // Return Stream where each Arguments contains the individual elements of a row - static Stream exactComputationsProvider() throws IOException { - // Map each String[] row to Arguments.of(row[0], row[1], row[2]) - return readCsv("exact_computations.csv").stream().map(row -> Arguments.of(row[0], row[1], row[2])); + static Stream exactComputationsProvider() throws IOException { + // Arrays of length 3 + return readCsv("exact_computations.csv").stream(); + } + + static Stream ambiguousComputationsProvider() throws IOException { + // Arrays of length 4 + return readCsv("ambiguous_computations.csv").stream(); + } + + static Stream firstLastDayOfMonthProvider() throws IOException { + // Arrays of length 3 + return readCsv("first_last_day_of_month.csv").stream(); } - static Stream ambiguousComputationsProvider() throws IOException { - // Map each String[] row to Arguments.of(row[0], row[1], row[2], row[3]) - return readCsv("ambiguous_computations.csv").stream().map(row -> Arguments.of(row[0], row[1], row[2], row[3])); + static void assertEquals(T expected, T received, String message) { + if (!(expected.equals(received))) { + throw new RuntimeException(message); + } } - static Stream firstLastDayOfMonthProvider() throws IOException { - // Map each String[] row to Arguments.of(row[0], row[1], row[2]) - return readCsv("first_last_day_of_month.csv").stream().map(row -> Arguments.of(row[0], row[1], row[2])); + static void assertThrows(Class exn_clazz, Runnable thunk, String message) { + try { + thunk.run(); + } catch (Exception e) { + if (exn_clazz.isInstance(e)) { + return; + } + } + throw new RuntimeException(message); } // --- Test Methods --- - @ParameterizedTest(name = "[{index}] {0} + {1} = {2}") - @MethodSource("exactComputationsProvider") - void testAddDatesExact(String dateStr, String periodStr, String expectedDateStr) { + static void testAddDatesExact(String dateStr, String periodStr, String expectedDateStr) { Date d = Date.fromString(dateStr); Period p = Period.fromString(periodStr); Date expected = Date.fromString(expectedDateStr); @@ -66,9 +75,7 @@ void testAddDatesExact(String dateStr, String periodStr, String expectedDateStr) assertEquals(expected, d.add(p, Date.Rounding.ROUND_DOWN), "Exact addition (RoundDown) failed for " + dateStr + " + " + periodStr); } - @ParameterizedTest(name = "[{index}] {0} + {1} -> UP={2}, DOWN={3}") - @MethodSource("ambiguousComputationsProvider") - void testAddDatesAmbiguous(String dateStr, String periodStr, String expectedUpStr, String expectedDownStr) { + static void testAddDatesAmbiguous(String dateStr, String periodStr, String expectedUpStr, String expectedDownStr) { // No need to access via index anymore Date d = Date.fromString(dateStr); Period p = Period.fromString(periodStr); @@ -80,9 +87,7 @@ void testAddDatesAmbiguous(String dateStr, String periodStr, String expectedUpSt assertEquals(expectedDown, d.add(p, Date.Rounding.ROUND_DOWN), "Ambiguous addition (RoundDown) failed for " + dateStr + " + " + periodStr); } - @ParameterizedTest(name = "[{index}] {0} -> First={1}, Last={2}") - @MethodSource("firstLastDayOfMonthProvider") - void testFirstLastDayOfMonth(String dateStr, String expectedFirstStr, String expectedLastStr) { + static void testFirstLastDayOfMonth(String dateStr, String expectedFirstStr, String expectedLastStr) { Date d = Date.fromString(dateStr); Date expectedFirst = Date.fromString(expectedFirstStr); Date expectedLast = Date.fromString(expectedLastStr); @@ -90,4 +95,14 @@ void testFirstLastDayOfMonth(String dateStr, String expectedFirstStr, String exp assertEquals(expectedFirst, d.firstDayOfMonth(), "First day of month calculation failed for " + dateStr); assertEquals(expectedLast, d.lastDayOfMonth(), "Last day of month calculation failed for " + dateStr); } + + public static void main(String[] args) throws IOException { + System.out.println("Running Java unit tests..."); + exactComputationsProvider().forEach(arr -> testAddDatesExact(arr[0], arr[1], arr[2])); + System.out.println("- Addition tests: OK"); + ambiguousComputationsProvider().forEach(arr -> testAddDatesAmbiguous(arr[0], arr[1], arr[2], arr[3])); + System.out.println("- Ambiguous addition tests: OK"); + firstLastDayOfMonthProvider().forEach(arr -> testFirstLastDayOfMonth(arr[0], arr[1], arr[2])); + System.out.println("- First/Last day of month tests: OK"); + } } diff --git a/lib_java/src/main/java/dates_calc/Period.java b/lib_java/src/dates_calc/Period.java similarity index 100% rename from lib_java/src/main/java/dates_calc/Period.java rename to lib_java/src/dates_calc/Period.java diff --git a/test/dune b/test/dune index 9b6184a..e85befa 100644 --- a/test/dune +++ b/test/dune @@ -29,5 +29,5 @@ (rule (alias runtest) - (deps (source_tree ../lib_java)) - (action (chdir ../lib_java (run mvn test)))) + (deps (file ../lib_java/test-main.jar)) + (action (run java -jar %{deps})))