Turn into a unit test to avoid main()

This commit is contained in:
Geoffrey De Smet 2023-11-25 21:09:32 +01:00
parent 5df3c5711a
commit 2e60ba5007
3 changed files with 11 additions and 7 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>timefold-solver</artifactId> <artifactId>timefold-solver</artifactId>
<name>timefold-solver</name> <name>timefold-solver</name>

View File

@ -24,6 +24,7 @@ class ShiftScheduleConstraintProviderUnitTest {
// To avoid that, use forEachUniquePair() in the constraint instead. // To avoid that, use forEachUniquePair() in the constraint instead.
.penalizesBy(2); .penalizesBy(2);
} }
@Test @Test
void whenTwoShiftsOnDifferentDays_thenDoNotPenalize() { void whenTwoShiftsOnDifferentDays_thenDoNotPenalize() {
Employee ann = new Employee("Ann", null); Employee ann = new Employee("Ann", null);

View File

@ -5,18 +5,21 @@ import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ai.timefold.solver.core.api.solver.Solver; import ai.timefold.solver.core.api.solver.Solver;
import ai.timefold.solver.core.api.solver.SolverFactory; import ai.timefold.solver.core.api.solver.SolverFactory;
import ai.timefold.solver.core.config.solver.SolverConfig; 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<ShiftSchedule> solverFactory = SolverFactory.create(new SolverConfig().withSolutionClass(ShiftSchedule.class) SolverFactory<ShiftSchedule> solverFactory = SolverFactory.create(new SolverConfig().withSolutionClass(ShiftSchedule.class)
.withEntityClasses(Shift.class) .withEntityClasses(Shift.class)
.withConstraintProviderClass(ShiftScheduleConstraintProvider.class) .withConstraintProviderClass(ShiftScheduleConstraintProvider.class)
@ -30,7 +33,7 @@ public class ShiftScheduleApp {
printSolution(solution); printSolution(solution);
} }
private static ShiftSchedule loadProblem() { private ShiftSchedule loadProblem() {
LocalDate monday = LocalDate.of(2030, 4, 1); LocalDate monday = LocalDate.of(2030, 4, 1);
LocalDate tuesday = LocalDate.of(2030, 4, 2); LocalDate tuesday = LocalDate.of(2030, 4, 2);
return new ShiftSchedule( return new ShiftSchedule(
@ -40,7 +43,7 @@ public class ShiftScheduleApp {
new Shift(tuesday.atTime(14, 0), tuesday.atTime(22, 0), "Bartender"))); 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"); logger.info("Shift assignments");
for (Shift shift : solution.getShifts()) { for (Shift shift : solution.getShifts()) {
logger.info(" " + shift.getStart() logger.info(" " + shift.getStart()