File size: 1,894 Bytes
f568829 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
package org.acme.flighcrewscheduling.rest;
import static io.restassured.RestAssured.given;
import static org.assertj.core.api.Assertions.assertThat;
import java.time.Duration;
import jakarta.inject.Inject;
import ai.timefold.solver.core.api.solver.Solver;
import ai.timefold.solver.core.api.solver.SolverFactory;
import ai.timefold.solver.core.config.solver.EnvironmentMode;
import ai.timefold.solver.core.config.solver.SolverConfig;
import org.acme.flighcrewscheduling.domain.FlightCrewSchedule;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import io.quarkus.test.junit.QuarkusTest;
@QuarkusTest
@EnabledIfSystemProperty(named = "slowly", matches = "true")
class FlightCrewSchedulingEnvironmentTest {
@Inject
SolverConfig solverConfig;
@Test
void solveFullAssert() {
solve(EnvironmentMode.FULL_ASSERT);
}
@Test
void solveStepAssert() {
solve(EnvironmentMode.STEP_ASSERT);
}
void solve(EnvironmentMode environmentMode) {
// Load the problem
FlightCrewSchedule problem = given()
.when().get("/demo-data")
.then()
.statusCode(200)
.extract()
.as(FlightCrewSchedule.class);
// Update the environment
SolverConfig updatedConfig = solverConfig.copyConfig();
updatedConfig.withEnvironmentMode(environmentMode)
.withTerminationSpentLimit(Duration.ofSeconds(30))
.getTerminationConfig().withBestScoreLimit(null);
SolverFactory<FlightCrewSchedule> solverFactory = SolverFactory.create(updatedConfig);
// Solve the problem
Solver<FlightCrewSchedule> solver = solverFactory.buildSolver();
FlightCrewSchedule solution = solver.solve(problem);
assertThat(solution.getScore()).isNotNull();
}
} |