From 2e60ba50079fbe296f326a281cda547ffc7bd2de Mon Sep 17 00:00:00 2001 From: Geoffrey De Smet Date: Sat, 25 Nov 2023 21:09:32 +0100 Subject: [PATCH] Turn into a unit test to avoid main() --- timefold-solver/pom.xml | 4 ++-- .../ShiftScheduleConstraintProviderUnitTest.java | 1 + .../ShiftScheduleSolverUnitTest.java} | 13 ++++++++----- 3 files changed, 11 insertions(+), 7 deletions(-) rename timefold-solver/src/{main/java/com/baeldung/timefoldsolver/ShiftScheduleApp.java => test/java/com/baeldung/timefoldsolver/ShiftScheduleSolverUnitTest.java} (86%) diff --git a/timefold-solver/pom.xml b/timefold-solver/pom.xml index 2a219a593c..a16afb9e54 100644 --- a/timefold-solver/pom.xml +++ b/timefold-solver/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 timefold-solver timefold-solver diff --git a/timefold-solver/src/test/java/com/baeldung/timefoldsolver/ShiftScheduleConstraintProviderUnitTest.java b/timefold-solver/src/test/java/com/baeldung/timefoldsolver/ShiftScheduleConstraintProviderUnitTest.java index 3a3f4dc032..3f68ef701e 100644 --- a/timefold-solver/src/test/java/com/baeldung/timefoldsolver/ShiftScheduleConstraintProviderUnitTest.java +++ b/timefold-solver/src/test/java/com/baeldung/timefoldsolver/ShiftScheduleConstraintProviderUnitTest.java @@ -24,6 +24,7 @@ class ShiftScheduleConstraintProviderUnitTest { // To avoid that, use forEachUniquePair() in the constraint instead. .penalizesBy(2); } + @Test void whenTwoShiftsOnDifferentDays_thenDoNotPenalize() { Employee ann = new Employee("Ann", null); diff --git a/timefold-solver/src/main/java/com/baeldung/timefoldsolver/ShiftScheduleApp.java b/timefold-solver/src/test/java/com/baeldung/timefoldsolver/ShiftScheduleSolverUnitTest.java similarity index 86% rename from timefold-solver/src/main/java/com/baeldung/timefoldsolver/ShiftScheduleApp.java rename to timefold-solver/src/test/java/com/baeldung/timefoldsolver/ShiftScheduleSolverUnitTest.java index e8dc02e2b3..45a84b40da 100644 --- a/timefold-solver/src/main/java/com/baeldung/timefoldsolver/ShiftScheduleApp.java +++ b/timefold-solver/src/test/java/com/baeldung/timefoldsolver/ShiftScheduleSolverUnitTest.java @@ -5,18 +5,21 @@ import java.time.LocalDate; import java.util.List; import java.util.Set; +import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ai.timefold.solver.core.api.solver.Solver; import ai.timefold.solver.core.api.solver.SolverFactory; import ai.timefold.solver.core.config.solver.SolverConfig; +import ai.timefold.solver.core.config.solver.termination.TerminationConfig; -public class ShiftScheduleApp { +public class ShiftScheduleSolverUnitTest { - private static final Logger logger = LoggerFactory.getLogger(ShiftScheduleApp.class); + private static final Logger logger = LoggerFactory.getLogger(ShiftScheduleSolverUnitTest.class); - public static void main(String[] args) { + @Test + public void solve() { SolverFactory solverFactory = SolverFactory.create(new SolverConfig().withSolutionClass(ShiftSchedule.class) .withEntityClasses(Shift.class) .withConstraintProviderClass(ShiftScheduleConstraintProvider.class) @@ -30,7 +33,7 @@ public class ShiftScheduleApp { printSolution(solution); } - private static ShiftSchedule loadProblem() { + private ShiftSchedule loadProblem() { LocalDate monday = LocalDate.of(2030, 4, 1); LocalDate tuesday = LocalDate.of(2030, 4, 2); return new ShiftSchedule( @@ -40,7 +43,7 @@ public class ShiftScheduleApp { new Shift(tuesday.atTime(14, 0), tuesday.atTime(22, 0), "Bartender"))); } - private static void printSolution(ShiftSchedule solution) { + private void printSolution(ShiftSchedule solution) { logger.info("Shift assignments"); for (Shift shift : solution.getShifts()) { logger.info(" " + shift.getStart()