diff --git a/core/src/test/java/ai/timefold/solver/core/impl/domain/solution/cloner/AbstractSolutionClonerTest.java b/core/src/test/java/ai/timefold/solver/core/impl/domain/solution/cloner/AbstractSolutionClonerTest.java index 542e9292791..b662eb393f2 100644 --- a/core/src/test/java/ai/timefold/solver/core/impl/domain/solution/cloner/AbstractSolutionClonerTest.java +++ b/core/src/test/java/ai/timefold/solver/core/impl/domain/solution/cloner/AbstractSolutionClonerTest.java @@ -38,7 +38,6 @@ import ai.timefold.solver.core.testdomain.collection.TestdataArrayBasedSolution; import ai.timefold.solver.core.testdomain.collection.TestdataEntityCollectionPropertyEntity; import ai.timefold.solver.core.testdomain.collection.TestdataEntityCollectionPropertySolution; -import ai.timefold.solver.core.testdomain.collection.TestdataSetBasedEntity; import ai.timefold.solver.core.testdomain.collection.TestdataSetBasedSolution; import ai.timefold.solver.core.testdomain.inheritance.solution.baseannotated.childnot.TestdataOnlyBaseAnnotatedBaseEntity; import ai.timefold.solver.core.testdomain.inheritance.solution.baseannotated.childnot.TestdataOnlyBaseAnnotatedChildEntity; @@ -472,10 +471,10 @@ void cloneSetBasedSolution() { var val1 = new TestdataValue("1"); var val2 = new TestdataValue("2"); var val3 = new TestdataValue("3"); - var a = new TestdataSetBasedEntity("a", val1); - var b = new TestdataSetBasedEntity("b", val1); - var c = new TestdataSetBasedEntity("c", val3); - var d = new TestdataSetBasedEntity("d", val3); + var a = new TestdataEntity("a", val1); + var b = new TestdataEntity("b", val1); + var c = new TestdataEntity("c", val3); + var d = new TestdataEntity("d", val3); var original = new TestdataSetBasedSolution("solution"); var valueSet = new TreeSet((a1, b1) -> { @@ -483,7 +482,7 @@ void cloneSetBasedSolution() { }); valueSet.addAll(Arrays.asList(val1, val2, val3)); original.setValueSet(valueSet); - Comparator entityComparator = (a1, b1) -> { + Comparator entityComparator = (a1, b1) -> { return b1.getCode().compareTo(a1.getCode()); // Reverse alphabetic }; var originalEntitySet = new TreeSet<>(entityComparator); @@ -540,7 +539,7 @@ void cloneSetBasedSolution() { assertCode("1", cloneB.getValue()); } - private void assertSetBasedEntityClone(TestdataSetBasedEntity originalEntity, TestdataSetBasedEntity cloneEntity, + private void assertSetBasedEntityClone(TestdataEntity originalEntity, TestdataEntity cloneEntity, String entityCode, String valueCode) { assertThat(cloneEntity).isNotSameAs(originalEntity); assertCode(entityCode, originalEntity); diff --git a/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/VariableSupportTest.java b/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/VariableSupportTest.java index 88be640cf50..e96a317a57a 100644 --- a/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/VariableSupportTest.java +++ b/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/VariableSupportTest.java @@ -53,7 +53,6 @@ import ai.timefold.solver.core.testdomain.shadow.concurrent.TestdataConcurrentValue; import ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse.TestdataBasicInverseEntity; import ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse.TestdataBasicInverseGroup; -import ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse.TestdataBasicInverseOwner; import ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse.TestdataBasicInverseSolution; import ai.timefold.solver.core.testdomain.shadow.dependency.TestdataDependencyEntity; import ai.timefold.solver.core.testdomain.shadow.dependency.TestdataDependencySimpleSolution; @@ -420,7 +419,7 @@ void basicVariableStateSurvivesWorkingSolutionResets() { // so a state which is not reused would accumulate one stale handler per reset. var solutionDescriptor = SolutionDescriptor.buildSolutionDescriptor(TestdataBasicInverseSolution.class, TestdataBasicInverseEntity.class, TestdataBasicInverseGroup.class); - var owner = new TestdataBasicInverseOwner("o1"); + var owner = new TestdataValue("o1"); var group = new TestdataBasicInverseGroup("g1"); group.setOwner(owner); var entity = new TestdataBasicInverseEntity("e1"); diff --git a/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/BasicInverseShadowVariableTest.java b/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/BasicInverseShadowVariableTest.java index c8ded48386a..91ef8257f6a 100644 --- a/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/BasicInverseShadowVariableTest.java +++ b/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/BasicInverseShadowVariableTest.java @@ -7,9 +7,9 @@ import ai.timefold.solver.core.preview.api.domain.metamodel.PlanningSolutionMetaModel; import ai.timefold.solver.core.preview.api.move.builtin.Moves; import ai.timefold.solver.core.preview.api.move.test.MoveTester; +import ai.timefold.solver.core.testdomain.TestdataValue; import ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse.TestdataBasicInverseEntity; import ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse.TestdataBasicInverseGroup; -import ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse.TestdataBasicInverseOwner; import ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse.TestdataBasicInverseSolution; import org.junit.jupiter.api.Test; @@ -25,8 +25,8 @@ class BasicInverseShadowVariableTest { @Test void declarativeShadowTracksBasicVariableChangeThroughNonExternalizedInverseSupply() { - var ownerX = new TestdataBasicInverseOwner("ownerX"); - var ownerY = new TestdataBasicInverseOwner("ownerY"); + var ownerX = new TestdataValue("ownerX"); + var ownerY = new TestdataValue("ownerY"); var groupA = new TestdataBasicInverseGroup("groupA"); groupA.setOwner(ownerX); @@ -44,7 +44,7 @@ void declarativeShadowTracksBasicVariableChangeThroughNonExternalizedInverseSupp var groupVariable = solutionMetaModel.genuineEntity(TestdataBasicInverseEntity.class) .basicVariable("group", TestdataBasicInverseGroup.class); var ownerVariable = solutionMetaModel.genuineEntity(TestdataBasicInverseGroup.class) - .basicVariable("owner", TestdataBasicInverseOwner.class); + .basicVariable("owner", TestdataValue.class); var context = MoveTester.build(solutionMetaModel).using(solution); assertThat(entity.getOwnerCode()).isEqualTo("ownerX"); diff --git a/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DeclarativeShadowVariablesMethodVariablesTest.java b/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DeclarativeShadowVariablesMethodVariablesTest.java index 0d2989d0176..1a88d32b09a 100644 --- a/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DeclarativeShadowVariablesMethodVariablesTest.java +++ b/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DeclarativeShadowVariablesMethodVariablesTest.java @@ -9,11 +9,11 @@ import ai.timefold.solver.core.config.solver.EnvironmentMode; import ai.timefold.solver.core.config.solver.SolverConfig; import ai.timefold.solver.core.config.solver.termination.TerminationConfig; -import ai.timefold.solver.core.testdomain.shadow.method_variables.TestdataDeclarativeMethodVariablesBaseValue; -import ai.timefold.solver.core.testdomain.shadow.method_variables.TestdataDeclarativeMethodVariablesConstraintProvider; +import ai.timefold.solver.core.testdomain.shadow.extended.TestdataDeclarativeExtendedBaseValue; +import ai.timefold.solver.core.testdomain.shadow.extended.TestdataDeclarativeExtendedConstraintProvider; +import ai.timefold.solver.core.testdomain.shadow.extended.TestdataDeclarativeExtendedSubclassValue; import ai.timefold.solver.core.testdomain.shadow.method_variables.TestdataDeclarativeMethodVariablesEntity; import ai.timefold.solver.core.testdomain.shadow.method_variables.TestdataDeclarativeMethodVariablesSolution; -import ai.timefold.solver.core.testdomain.shadow.method_variables.TestdataDeclarativeMethodVariablesSubclassValue; import org.junit.jupiter.api.Test; @@ -25,9 +25,9 @@ void methodDefinedVariables() { .withEnvironmentMode(EnvironmentMode.TRACKED_FULL_ASSERT) .withSolutionClass(TestdataDeclarativeMethodVariablesSolution.class) .withEntityClasses(TestdataDeclarativeMethodVariablesEntity.class, - TestdataDeclarativeMethodVariablesBaseValue.class, - TestdataDeclarativeMethodVariablesSubclassValue.class) - .withConstraintProviderClass(TestdataDeclarativeMethodVariablesConstraintProvider.class) + TestdataDeclarativeExtendedBaseValue.class, + TestdataDeclarativeExtendedSubclassValue.class) + .withConstraintProviderClass(TestdataDeclarativeExtendedConstraintProvider.class) .withTerminationConfig(new TerminationConfig() .withScoreCalculationCountLimit(1000L)); @@ -38,9 +38,9 @@ void methodDefinedVariables() { var entityA = new TestdataDeclarativeMethodVariablesEntity("A"); var entityB = new TestdataDeclarativeMethodVariablesEntity("B"); - var value1 = new TestdataDeclarativeMethodVariablesSubclassValue("1"); - var value2 = new TestdataDeclarativeMethodVariablesSubclassValue("2"); - var value31 = new TestdataDeclarativeMethodVariablesSubclassValue("31"); + var value1 = new TestdataDeclarativeExtendedSubclassValue("1"); + var value2 = new TestdataDeclarativeExtendedSubclassValue("2"); + var value31 = new TestdataDeclarativeExtendedSubclassValue("31"); problem.setEntities(List.of(entityA, entityB)); problem.setValues(List.of(value1, value2, value31)); diff --git a/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DynamicFollowerValuesShadowVariableTest.java b/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DynamicFollowerValuesShadowVariableTest.java index c061271f0a6..b748b8b9f99 100644 --- a/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DynamicFollowerValuesShadowVariableTest.java +++ b/core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DynamicFollowerValuesShadowVariableTest.java @@ -11,10 +11,10 @@ import ai.timefold.solver.core.preview.api.move.builtin.Moves; import ai.timefold.solver.core.preview.api.move.test.MoveTester; import ai.timefold.solver.core.testdomain.TestdataValue; -import ai.timefold.solver.core.testdomain.shadow.dynamic_follower.TestdataDynamicFollowerConstraintProvider; import ai.timefold.solver.core.testdomain.shadow.dynamic_follower.TestdataDynamicFollowerEntity; import ai.timefold.solver.core.testdomain.shadow.dynamic_follower.TestdataDynamicFollowerSolution; -import ai.timefold.solver.core.testdomain.shadow.dynamic_follower.TestdataDynamicLeaderEntity; +import ai.timefold.solver.core.testdomain.shadow.follower.TestdataFollowerConstraintProvider; +import ai.timefold.solver.core.testdomain.shadow.follower.TestdataLeaderEntity; import org.junit.jupiter.api.Test; @@ -25,8 +25,8 @@ void testSolve() { var solverConfig = new SolverConfig() .withSolutionClass(TestdataDynamicFollowerSolution.class) - .withEntityClasses(TestdataDynamicLeaderEntity.class, TestdataDynamicFollowerEntity.class) - .withConstraintProviderClass(TestdataDynamicFollowerConstraintProvider.class) + .withEntityClasses(TestdataLeaderEntity.class, TestdataDynamicFollowerEntity.class) + .withConstraintProviderClass(TestdataFollowerConstraintProvider.class) .withEnvironmentMode(EnvironmentMode.FULL_ASSERT) .withTerminationConfig(new TerminationConfig() .withMoveCountLimit(1_000L)); @@ -42,8 +42,8 @@ void testSolve() { @Test void testLeaderValueChangeMove() { - var leaderA = new TestdataDynamicLeaderEntity("Leader A"); - var leaderB = new TestdataDynamicLeaderEntity("Leader B"); + var leaderA = new TestdataLeaderEntity("Leader A"); + var leaderB = new TestdataLeaderEntity("Leader B"); var follower1 = new TestdataDynamicFollowerEntity("Follower 1", leaderA); var follower2 = new TestdataDynamicFollowerEntity("Follower 2", leaderA); @@ -58,7 +58,7 @@ void testLeaderValueChangeMove() { List.of(value1, value2)); var solutionMetamodel = TestdataDynamicFollowerSolution.buildMetaModel(); - var variableMetamodel = solutionMetamodel.genuineEntity(TestdataDynamicLeaderEntity.class) + var variableMetamodel = solutionMetamodel.genuineEntity(TestdataLeaderEntity.class) .basicVariable("value", TestdataValue.class); var context = MoveTester.build(solutionMetamodel) @@ -81,8 +81,8 @@ void testLeaderValueChangeMove() { @Test void testLeaderChangeMove() { - var leaderA = new TestdataDynamicLeaderEntity("Leader A"); - var leaderB = new TestdataDynamicLeaderEntity("Leader B"); + var leaderA = new TestdataLeaderEntity("Leader A"); + var leaderB = new TestdataLeaderEntity("Leader B"); var follower1 = new TestdataDynamicFollowerEntity("Follower 1", leaderA); var follower2 = new TestdataDynamicFollowerEntity("Follower 2", leaderA); @@ -105,7 +105,7 @@ void testLeaderChangeMove() { var solutionMetamodel = TestdataDynamicFollowerSolution.buildMetaModel(); var variableMetamodel = solutionMetamodel.genuineEntity(TestdataDynamicFollowerEntity.class) - .basicVariable("leader", TestdataDynamicLeaderEntity.class); + .basicVariable("leader", TestdataLeaderEntity.class); var context = MoveTester.build(solutionMetamodel) .using(solution); diff --git a/core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/inliner/SimpleScoreInlinerTest.java b/core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/inliner/SimpleScoreInlinerTest.java index 85e6f55fe12..eeb739f969f 100644 --- a/core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/inliner/SimpleScoreInlinerTest.java +++ b/core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/inliner/SimpleScoreInlinerTest.java @@ -10,11 +10,11 @@ import ai.timefold.solver.core.api.score.stream.Constraint; import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; import ai.timefold.solver.core.impl.score.constraint.ConstraintMatchPolicy; -import ai.timefold.solver.core.testdomain.score.TestdataSimpleScoreSolution; +import ai.timefold.solver.core.testdomain.TestdataSolution; import org.junit.jupiter.api.Test; -class SimpleScoreInlinerTest extends AbstractScoreInlinerTest { +class SimpleScoreInlinerTest extends AbstractScoreInlinerTest { @Test void defaultScore() { @@ -63,8 +63,8 @@ void impactTotalOverflow() { } @Override - protected SolutionDescriptor buildSolutionDescriptor() { - return TestdataSimpleScoreSolution.buildSolutionDescriptor(); + protected SolutionDescriptor buildSolutionDescriptor() { + return TestdataSolution.buildSolutionDescriptor(); } @Override diff --git a/core/src/test/java/ai/timefold/solver/core/impl/solver/DefaultSolverTest.java b/core/src/test/java/ai/timefold/solver/core/impl/solver/DefaultSolverTest.java index fd5886a4b10..7f358ba5e84 100644 --- a/core/src/test/java/ai/timefold/solver/core/impl/solver/DefaultSolverTest.java +++ b/core/src/test/java/ai/timefold/solver/core/impl/solver/DefaultSolverTest.java @@ -130,7 +130,6 @@ import ai.timefold.solver.core.testdomain.list.valuerange.unassignedvar.sortedset.TestdataListUnassignedEntityProvidingSortedSetSolution; import ai.timefold.solver.core.testdomain.mixed.multientity.TestdataMixedEntityEasyScoreCalculator; import ai.timefold.solver.core.testdomain.mixed.multientity.TestdataMixedMultiEntityFirstEntity; -import ai.timefold.solver.core.testdomain.mixed.multientity.TestdataMixedMultiEntityFirstValue; import ai.timefold.solver.core.testdomain.mixed.multientity.TestdataMixedMultiEntitySecondEntity; import ai.timefold.solver.core.testdomain.mixed.multientity.TestdataMixedMultiEntitySecondValue; import ai.timefold.solver.core.testdomain.mixed.multientity.TestdataMixedMultiEntitySolution; @@ -2813,9 +2812,9 @@ void failMixedModelInvalidValueRange() { .withEasyScoreCalculatorClass(DummySimpleScoreEasyScoreCalculator.class); var problem = new TestdataMixedMultiEntitySolution(); - var v1a = new TestdataMixedMultiEntityFirstValue("1"); - var v2a = new TestdataMixedMultiEntityFirstValue("2"); - var v3a = new TestdataMixedMultiEntityFirstValue("3"); + var v1a = new TestdataValue("1"); + var v2a = new TestdataValue("2"); + var v3a = new TestdataValue("3"); var v1b = new TestdataMixedMultiEntitySecondValue("1", 1); var v2b = new TestdataMixedMultiEntitySecondValue("2", 1); var v3b = new TestdataMixedMultiEntitySecondValue("3", 1); diff --git a/core/src/test/java/ai/timefold/solver/core/preview/api/move/builtin/ChangeMoveProviderTest.java b/core/src/test/java/ai/timefold/solver/core/preview/api/move/builtin/ChangeMoveProviderTest.java index b9671cc850d..71ee6bcec82 100644 --- a/core/src/test/java/ai/timefold/solver/core/preview/api/move/builtin/ChangeMoveProviderTest.java +++ b/core/src/test/java/ai/timefold/solver/core/preview/api/move/builtin/ChangeMoveProviderTest.java @@ -17,7 +17,6 @@ import ai.timefold.solver.core.testdomain.valuerange.entityproviding.TestdataEntityProvidingSolution; import ai.timefold.solver.core.testdomain.valuerange.entityproviding.unassignedvar.TestdataAllowsUnassignedEntityProvidingEntity; import ai.timefold.solver.core.testdomain.valuerange.entityproviding.unassignedvar.TestdataAllowsUnassignedEntityProvidingSolution; -import ai.timefold.solver.core.testdomain.valuerange.incomplete.TestdataIncompleteValueRangeEntity; import ai.timefold.solver.core.testdomain.valuerange.incomplete.TestdataIncompleteValueRangeSolution; import org.jspecify.annotations.NullMarked; @@ -53,7 +52,7 @@ void fromSolution() { @Test void fromSolutionIncompleteValueRange() { var solutionMetaModel = TestdataIncompleteValueRangeSolution.buildMetaModel(); - var variableMetaModel = solutionMetaModel.genuineEntity(TestdataIncompleteValueRangeEntity.class) + var variableMetaModel = solutionMetaModel.genuineEntity(TestdataEntity.class) .basicVariable(); // The point of this test is to ensure that the move provider skips values that are not in the value range. diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingEntity.java deleted file mode 100644 index f64cd2a35b8..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingEntity.java +++ /dev/null @@ -1,56 +0,0 @@ -package ai.timefold.solver.core.testdomain.cascade.multiple; - -import java.util.LinkedList; -import java.util.List; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningListVariable; -import ai.timefold.solver.core.impl.domain.entity.descriptor.EntityDescriptor; -import ai.timefold.solver.core.impl.domain.variable.descriptor.ListVariableDescriptor; -import ai.timefold.solver.core.testdomain.TestdataObject; - -@PlanningEntity -public class TestdataMultipleCascadingEntity extends TestdataObject { - - public static EntityDescriptor buildEntityDescriptor() { - return TestdataMultipleCascadingSolution.buildSolutionDescriptor() - .findEntityDescriptorOrFail(TestdataMultipleCascadingEntity.class); - } - - public static ListVariableDescriptor buildVariableDescriptorForValueList() { - return (ListVariableDescriptor) buildEntityDescriptor() - .getGenuineVariableDescriptor("valueList"); - } - - @PlanningListVariable(valueRangeProviderRefs = "valueRange") - private List valueList; - - public TestdataMultipleCascadingEntity() { - } - - public TestdataMultipleCascadingEntity(String code) { - super(code); - this.valueList = new LinkedList<>(); - } - - public TestdataMultipleCascadingEntity(String code, List valueList) { - super(code); - this.valueList = valueList; - } - - @SuppressWarnings("rawtypes") - public void setValueList(List valueList) { - this.valueList = valueList; - } - - public List getValueList() { - return valueList; - } - - @Override - public String toString() { - return "TestdataMultipleCascadingEntity{" + - "code='" + code + '\'' + - '}'; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingSolution.java deleted file mode 100644 index 6d7ca027007..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingSolution.java +++ /dev/null @@ -1,71 +0,0 @@ -package ai.timefold.solver.core.testdomain.cascade.multiple; - -import java.util.List; -import java.util.stream.IntStream; - -import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty; -import ai.timefold.solver.core.api.domain.solution.PlanningScore; -import ai.timefold.solver.core.api.domain.solution.PlanningSolution; -import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; - -@PlanningSolution -public class TestdataMultipleCascadingSolution { - - public static SolutionDescriptor buildSolutionDescriptor() { - return SolutionDescriptor.buildSolutionDescriptor( - TestdataMultipleCascadingSolution.class, - TestdataMultipleCascadingEntity.class, - TestdataMultipleCascadingValue.class); - } - - public static TestdataMultipleCascadingSolution generateUninitializedSolution(int valueCount, int entityCount) { - return generateSolution(valueCount, entityCount); - } - - private static TestdataMultipleCascadingSolution generateSolution(int valueCount, int entityCount) { - List entityList = IntStream.range(1, entityCount + 1) - .mapToObj(i -> new TestdataMultipleCascadingEntity("Generated Entity " + i)) - .toList(); - List valueList = IntStream.range(1, valueCount + 1) - .mapToObj(TestdataMultipleCascadingValue::new) - .toList(); - TestdataMultipleCascadingSolution solution = new TestdataMultipleCascadingSolution(); - solution.setValueList(valueList); - solution.setEntityList(entityList); - return solution; - } - - private List valueList; - private List entityList; - private SimpleScore score; - - @ValueRangeProvider(id = "valueRange") - @PlanningEntityCollectionProperty - public List getValueList() { - return valueList; - } - - public void setValueList(List valueList) { - this.valueList = valueList; - } - - @PlanningEntityCollectionProperty - public List getEntityList() { - return entityList; - } - - public void setEntityList(List entityList) { - this.entityList = entityList; - } - - @PlanningScore - public SimpleScore getScore() { - return score; - } - - public void setScore(SimpleScore score) { - this.score = score; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingValue.java b/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingValue.java deleted file mode 100644 index 20b0c40d247..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingValue.java +++ /dev/null @@ -1,104 +0,0 @@ -package ai.timefold.solver.core.testdomain.cascade.multiple; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.CascadingUpdateShadowVariable; -import ai.timefold.solver.core.api.domain.variable.InverseRelationShadowVariable; -import ai.timefold.solver.core.api.domain.variable.NextElementShadowVariable; -import ai.timefold.solver.core.api.domain.variable.PreviousElementShadowVariable; -import ai.timefold.solver.core.impl.domain.entity.descriptor.EntityDescriptor; - -@PlanningEntity -public class TestdataMultipleCascadingValue { - - public static EntityDescriptor buildEntityDescriptor() { - return TestdataMultipleCascadingSolution.buildSolutionDescriptor() - .findEntityDescriptorOrFail(TestdataMultipleCascadingValue.class); - } - - @InverseRelationShadowVariable(sourceVariableName = "valueList") - private TestdataMultipleCascadingEntity entity; - @PreviousElementShadowVariable(sourceVariableName = "valueList") - private TestdataMultipleCascadingValue previous; - @NextElementShadowVariable(sourceVariableName = "valueList") - private TestdataMultipleCascadingValue next; - @CascadingUpdateShadowVariable(targetMethodName = "updateCascadeValue") - private Integer cascadeValue; - @CascadingUpdateShadowVariable(targetMethodName = "updateCascadeValue") - private Integer secondCascadeValue; - private Integer value; - private int numberOfCalls = 0; - - public TestdataMultipleCascadingValue(Integer value) { - this.value = value; - } - - public TestdataMultipleCascadingEntity getEntity() { - return entity; - } - - public void setEntity(TestdataMultipleCascadingEntity entity) { - this.entity = entity; - } - - public TestdataMultipleCascadingValue getPrevious() { - return previous; - } - - public void setPrevious(TestdataMultipleCascadingValue previous) { - this.previous = previous; - } - - public TestdataMultipleCascadingValue getNext() { - return next; - } - - public void setNext(TestdataMultipleCascadingValue next) { - this.next = next; - } - - public Integer getValue() { - return value; - } - - public void setValue(Integer value) { - this.value = value; - } - - public void setCascadeValue(Integer cascadeValue) { - this.cascadeValue = cascadeValue; - } - - public Integer getCascadeValue() { - return cascadeValue; - } - - public Integer getSecondCascadeValue() { - return secondCascadeValue; - } - - public void setSecondCascadeValue(Integer secondCascadeValue) { - this.secondCascadeValue = secondCascadeValue; - } - - public int getNumberOfCalls() { - return numberOfCalls; - } - - //---Complex methods---// - public void updateCascadeValue() { - numberOfCalls++; - if (cascadeValue == null) { - cascadeValue = value; - } - if (secondCascadeValue == null || secondCascadeValue != value + 1) { - secondCascadeValue = value + 1; - } - } - - @Override - public String toString() { - return "TestdataMultipleCascadingValue{" + - "value=" + value + - '}'; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEquals.java b/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEquals.java deleted file mode 100644 index b8f4a980115..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEquals.java +++ /dev/null @@ -1,25 +0,0 @@ -package ai.timefold.solver.core.testdomain.clone.lookup; - -public class TestdataObjectEquals { - - private final int id; - - public TestdataObjectEquals(int id) { - this.id = id; - } - - @Override - public int hashCode() { - return Integer.hashCode(id); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - return obj instanceof TestdataObjectEquals other && - this.id == other.id; - } - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEqualsNoHashCode.java b/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEqualsNoHashCode.java deleted file mode 100644 index b95729b64f9..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEqualsNoHashCode.java +++ /dev/null @@ -1,28 +0,0 @@ -package ai.timefold.solver.core.testdomain.clone.lookup; - -import java.util.Objects; - -public class TestdataObjectEqualsNoHashCode { - - private final Integer id; - - public TestdataObjectEqualsNoHashCode(Integer id) { - this.id = id; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final TestdataObjectEqualsNoHashCode other = (TestdataObjectEqualsNoHashCode) obj; - return Objects.equals(this.id, other.id); - } - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEqualsSubclass.java b/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEqualsSubclass.java deleted file mode 100644 index e8fb57829db..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEqualsSubclass.java +++ /dev/null @@ -1,9 +0,0 @@ -package ai.timefold.solver.core.testdomain.clone.lookup; - -public class TestdataObjectEqualsSubclass extends TestdataObjectEquals { - - public TestdataObjectEqualsSubclass(int id) { - super(id); - } - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedEntity.java deleted file mode 100644 index 563affc4677..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedEntity.java +++ /dev/null @@ -1,44 +0,0 @@ -package ai.timefold.solver.core.testdomain.collection; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.impl.domain.entity.descriptor.EntityDescriptor; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataValue; - -@PlanningEntity -public class TestdataSetBasedEntity extends TestdataObject { - - public static EntityDescriptor buildEntityDescriptor() { - return TestdataSetBasedSolution.buildSolutionDescriptor() - .findEntityDescriptorOrFail(TestdataSetBasedEntity.class); - } - - private TestdataValue value; - - public TestdataSetBasedEntity() { - } - - public TestdataSetBasedEntity(String code) { - super(code); - } - - public TestdataSetBasedEntity(String code, TestdataValue value) { - this(code); - this.value = value; - } - - @PlanningVariable(valueRangeProviderRefs = "valueRange") - public TestdataValue getValue() { - return value; - } - - public void setValue(TestdataValue value) { - this.value = value; - } - - // ************************************************************************ - // Complex methods - // ************************************************************************ - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedSolution.java index 159ea8d245a..70dc8bcc7b8 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedSolution.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedSolution.java @@ -12,6 +12,7 @@ import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; +import ai.timefold.solver.core.testdomain.TestdataEntity; import ai.timefold.solver.core.testdomain.TestdataObject; import ai.timefold.solver.core.testdomain.TestdataValue; @@ -19,15 +20,15 @@ public class TestdataSetBasedSolution extends TestdataObject { public static SolutionDescriptor buildSolutionDescriptor() { - return SolutionDescriptor.buildSolutionDescriptor(TestdataSetBasedSolution.class, TestdataSetBasedEntity.class); + return SolutionDescriptor.buildSolutionDescriptor(TestdataSetBasedSolution.class, TestdataEntity.class); } private Set valueSet; - private Set entitySet; + private Set entitySet; - private HashSet entityHashSet; - private LinkedHashSet entityLinkedHashSet; - private TreeSet entityTreeSet; + private HashSet entityHashSet; + private LinkedHashSet entityLinkedHashSet; + private TreeSet entityTreeSet; private SimpleScore score; @@ -49,36 +50,36 @@ public void setValueSet(Set valueSet) { } @PlanningEntityCollectionProperty - public Set getEntitySet() { + public Set getEntitySet() { return entitySet; } - public void setEntitySet(Set entitySet) { + public void setEntitySet(Set entitySet) { this.entitySet = entitySet; } - public HashSet getEntityHashSet() { + public HashSet getEntityHashSet() { return entityHashSet; } - public void setEntityHashSet(HashSet entityHashSet) { + public void setEntityHashSet(HashSet entityHashSet) { this.entityHashSet = entityHashSet; } - public LinkedHashSet getEntityLinkedHashSet() { + public LinkedHashSet getEntityLinkedHashSet() { return entityLinkedHashSet; } public void setEntityLinkedHashSet( - LinkedHashSet entityLinkedHashSet) { + LinkedHashSet entityLinkedHashSet) { this.entityLinkedHashSet = entityLinkedHashSet; } - public TreeSet getEntityTreeSet() { + public TreeSet getEntityTreeSet() { return entityTreeSet; } - public void setEntityTreeSet(TreeSet entityTreeSet) { + public void setEntityTreeSet(TreeSet entityTreeSet) { this.entityTreeSet = entityTreeSet; } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/TestdataSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/TestdataSolution.java index 8ef2923ca55..cffedf3ee89 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/TestdataSolution.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/TestdataSolution.java @@ -11,7 +11,7 @@ import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; import ai.timefold.solver.core.testdomain.TestdataObject; import ai.timefold.solver.core.testdomain.immutable.record.TestdataRecordEntity; -import ai.timefold.solver.core.testdomain.immutable.record.TestdataRecordValue; +import ai.timefold.solver.core.testdomain.record.TestdataRecordValue; @PlanningSolution public class TestdataSolution extends TestdataObject { diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordSolution.java index 2765f92cf05..703422a362d 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordSolution.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordSolution.java @@ -10,6 +10,7 @@ import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; +import ai.timefold.solver.core.testdomain.record.TestdataRecordValue; @PlanningSolution public record TestdataRecordSolution( diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordValue.java b/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordValue.java deleted file mode 100644 index 03a6c178049..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordValue.java +++ /dev/null @@ -1,6 +0,0 @@ -package ai.timefold.solver.core.testdomain.immutable.record; - -import ai.timefold.solver.core.api.domain.common.PlanningId; - -public record TestdataRecordValue(@PlanningId String code) { -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/inheritance/entity/single/baseannotated/classes/pinned/TestdataExtendedPinnedEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/inheritance/entity/single/baseannotated/classes/pinned/TestdataExtendedPinnedEntity.java deleted file mode 100644 index 437fdfd70d0..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/inheritance/entity/single/baseannotated/classes/pinned/TestdataExtendedPinnedEntity.java +++ /dev/null @@ -1,56 +0,0 @@ -package ai.timefold.solver.core.testdomain.inheritance.entity.single.baseannotated.classes.pinned; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.entity.PlanningPin; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.testdomain.TestdataValue; -import ai.timefold.solver.core.testdomain.pinned.TestdataPinnedEntity; - -@PlanningEntity -public class TestdataExtendedPinnedEntity extends TestdataPinnedEntity { - - private TestdataValue subValue; - private boolean pinnedByBoss; - - public TestdataExtendedPinnedEntity() { - } - - public TestdataExtendedPinnedEntity(String code) { - super(code); - } - - public TestdataExtendedPinnedEntity(String code, TestdataValue value, TestdataValue subValue) { - super(code, value); - this.subValue = subValue; - } - - public TestdataExtendedPinnedEntity(String code, TestdataValue value, boolean pinned, TestdataValue subValue, - boolean pinnedByBoss) { - super(code, value, pinned); - this.subValue = subValue; - this.pinnedByBoss = pinnedByBoss; - } - - @PlanningVariable(valueRangeProviderRefs = "subValueRange") - public TestdataValue getSubValue() { - return subValue; - } - - public void setSubValue(TestdataValue subValue) { - this.subValue = subValue; - } - - @PlanningPin - public boolean isPinnedByBoss() { - return pinnedByBoss; - } - - public void setPinnedByBoss(boolean pinnedByBoss) { - this.pinnedByBoss = pinnedByBoss; - } - - // ************************************************************************ - // Complex methods - // ************************************************************************ - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/inheritance/entity/single/baseannotated/classes/pinned/TestdataExtendedPinnedSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/inheritance/entity/single/baseannotated/classes/pinned/TestdataExtendedPinnedSolution.java deleted file mode 100644 index bd7953094cb..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/inheritance/entity/single/baseannotated/classes/pinned/TestdataExtendedPinnedSolution.java +++ /dev/null @@ -1,79 +0,0 @@ -package ai.timefold.solver.core.testdomain.inheritance.entity.single.baseannotated.classes.pinned; - -import java.util.List; - -import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty; -import ai.timefold.solver.core.api.domain.solution.PlanningScore; -import ai.timefold.solver.core.api.domain.solution.PlanningSolution; -import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; -import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataValue; -import ai.timefold.solver.core.testdomain.pinned.TestdataPinnedEntity; - -@PlanningSolution -public class TestdataExtendedPinnedSolution extends TestdataObject { - - public static SolutionDescriptor buildSolutionDescriptor() { - return SolutionDescriptor.buildSolutionDescriptor(TestdataExtendedPinnedSolution.class, - TestdataPinnedEntity.class, TestdataExtendedPinnedEntity.class); - } - - private List valueList; - private List subValueList; - private List entityList; - - private SimpleScore score; - - public TestdataExtendedPinnedSolution() { - } - - public TestdataExtendedPinnedSolution(String code) { - super(code); - } - - @ValueRangeProvider(id = "valueRange") - @ProblemFactCollectionProperty - public List getValueList() { - return valueList; - } - - public void setValueList(List valueList) { - this.valueList = valueList; - } - - @ValueRangeProvider(id = "subValueRange") - @ProblemFactCollectionProperty - public List getSubValueList() { - return subValueList; - } - - public void setSubValueList(List subValueList) { - this.subValueList = subValueList; - } - - @PlanningEntityCollectionProperty - public List getEntityList() { - return entityList; - } - - public void setEntityList(List entityList) { - this.entityList = entityList; - } - - @PlanningScore - public SimpleScore getScore() { - return score; - } - - public void setScore(SimpleScore score) { - this.score = score; - } - - // ************************************************************************ - // Complex methods - // ************************************************************************ - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/invalid/gettersetter/TestdataDifferentGetterSetterVisibilityEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/invalid/gettersetter/TestdataDifferentGetterSetterVisibilityEntity.java deleted file mode 100644 index c77ded8c575..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/invalid/gettersetter/TestdataDifferentGetterSetterVisibilityEntity.java +++ /dev/null @@ -1,32 +0,0 @@ -package ai.timefold.solver.core.testdomain.invalid.gettersetter; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.testdomain.TestdataValue; - -@PlanningEntity -public class TestdataDifferentGetterSetterVisibilityEntity { - - private TestdataValue value1; - private TestdataValue value2; - - @PlanningVariable - public TestdataValue getValue1() { - return value1; - } - - private void setValue1(TestdataValue value1) { - this.value1 = value1; - } - - @PlanningVariable - TestdataValue getValue2() { - return value2; - } - - @PlanningVariable - protected TestdataValue setValue2(TestdataValue value2) { - return value2; - } - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/invalid/gettersetter/TestdataInvalidGetterEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/invalid/gettersetter/TestdataInvalidGetterEntity.java deleted file mode 100644 index 1b168afa046..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/invalid/gettersetter/TestdataInvalidGetterEntity.java +++ /dev/null @@ -1,17 +0,0 @@ -package ai.timefold.solver.core.testdomain.invalid.gettersetter; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.testdomain.TestdataValue; - -@PlanningEntity -public class TestdataInvalidGetterEntity { - - @PlanningVariable - private TestdataValue valueWithoutSetter; - - public TestdataValue getValueWithoutSetter() { - return valueWithoutSetter; - } - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/list/pinned/index/TestdataPinnedWithIndexDistanceMeter.java b/core/src/test/java/ai/timefold/solver/core/testdomain/list/pinned/index/TestdataPinnedWithIndexDistanceMeter.java deleted file mode 100644 index e37c1dc56f5..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/list/pinned/index/TestdataPinnedWithIndexDistanceMeter.java +++ /dev/null @@ -1,26 +0,0 @@ -package ai.timefold.solver.core.testdomain.list.pinned.index; - -import ai.timefold.solver.core.impl.heuristic.selector.common.nearby.NearbyDistanceMeter; -import ai.timefold.solver.core.testdomain.TestdataObject; - -/** - * For the sake of test readability, planning values (list variable elements) are placed in a 1-dimensional space. - * An element's coordinate is represented by its ({@link TestdataObject#getCode() code}. If the code is not a number, - * it is interpreted as zero. - */ -public class TestdataPinnedWithIndexDistanceMeter - implements NearbyDistanceMeter { - - @Override - public double getNearbyDistance(TestdataPinnedWithIndexListValue origin, TestdataObject destination) { - return Math.abs(coordinate(destination) - coordinate(origin)); - } - - static int coordinate(TestdataObject o) { - try { - return Integer.parseInt(o.getCode()); - } catch (NumberFormatException e) { - return 0; - } - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstEntity.java index 385cc9a8b8b..c099694745b 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstEntity.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstEntity.java @@ -6,12 +6,13 @@ import ai.timefold.solver.core.api.domain.entity.PlanningEntity; import ai.timefold.solver.core.api.domain.variable.PlanningListVariable; import ai.timefold.solver.core.testdomain.TestdataObject; +import ai.timefold.solver.core.testdomain.TestdataValue; @PlanningEntity(comparatorClass = TestdataMixedMultiEntityFirstEntityComparator.class) public class TestdataMixedMultiEntityFirstEntity extends TestdataObject { @PlanningListVariable(valueRangeProviderRefs = "valueRange") - private List valueList; + private List valueList; private int difficulty; @@ -25,11 +26,11 @@ public TestdataMixedMultiEntityFirstEntity(String code, int difficulty) { this.difficulty = difficulty; } - public List getValueList() { + public List getValueList() { return valueList; } - public void setValueList(List valueList) { + public void setValueList(List valueList) { this.valueList = valueList; } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstValue.java b/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstValue.java deleted file mode 100644 index bf8cbdccbb4..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstValue.java +++ /dev/null @@ -1,14 +0,0 @@ -package ai.timefold.solver.core.testdomain.mixed.multientity; - -import ai.timefold.solver.core.testdomain.TestdataObject; - -public class TestdataMixedMultiEntityFirstValue extends TestdataObject { - - public TestdataMixedMultiEntityFirstValue() { - // Required for cloner - } - - public TestdataMixedMultiEntityFirstValue(String code) { - super(code); - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntitySolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntitySolution.java index e0b32a2bb1a..2d478702b93 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntitySolution.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntitySolution.java @@ -10,6 +10,7 @@ import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; +import ai.timefold.solver.core.testdomain.TestdataValue; @PlanningSolution public class TestdataMixedMultiEntitySolution { @@ -22,10 +23,10 @@ public static SolutionDescriptor buildSolution public static TestdataMixedMultiEntitySolution generateUninitializedSolution(int entityListSize, int valueListSize, int otherValueListSize) { var solution = new TestdataMixedMultiEntitySolution(); - var valueList = new ArrayList(valueListSize); + var valueList = new ArrayList(valueListSize); var otherValueList = new ArrayList(otherValueListSize); for (int i = 0; i < valueListSize; i++) { - valueList.add(new TestdataMixedMultiEntityFirstValue("Generated Value " + i)); + valueList.add(new TestdataValue("Generated Value " + i)); } var strength = otherValueListSize * 10; for (int i = 0; i < otherValueListSize; i++) { @@ -48,7 +49,7 @@ public static TestdataMixedMultiEntitySolution generateUninitializedSolution(int @ValueRangeProvider(id = "valueRange") @ProblemFactCollectionProperty - private List valueList; + private List valueList; @ValueRangeProvider(id = "otherValueRange") @ProblemFactCollectionProperty private List otherValueList; @@ -59,11 +60,11 @@ public static TestdataMixedMultiEntitySolution generateUninitializedSolution(int @PlanningScore private SimpleScore score; - public List getValueList() { + public List getValueList() { return valueList; } - public void setValueList(List valueList) { + public void setValueList(List valueList) { this.valueList = valueList; } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/planningid/TestdataStringPlanningIdEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/planningid/TestdataStringPlanningIdEntity.java deleted file mode 100644 index 9b5723c59ed..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/planningid/TestdataStringPlanningIdEntity.java +++ /dev/null @@ -1,39 +0,0 @@ -package ai.timefold.solver.core.testdomain.planningid; - -import ai.timefold.solver.core.api.domain.common.PlanningId; -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; - -@PlanningEntity -public class TestdataStringPlanningIdEntity { - @PlanningId - private String planningId; - - @PlanningVariable(valueRangeProviderRefs = "stringValueRange") - private String value; - - public TestdataStringPlanningIdEntity(String planningId) { - this(planningId, null); - } - - public TestdataStringPlanningIdEntity(String planningId, String value) { - this.planningId = planningId; - this.value = value; - } - - public String getPlanningId() { - return planningId; - } - - public void setPlanningId(String planningId) { - this.planningId = planningId; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/planningid/TestdataStringPlanningIdSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/planningid/TestdataStringPlanningIdSolution.java deleted file mode 100644 index 366f328f11a..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/planningid/TestdataStringPlanningIdSolution.java +++ /dev/null @@ -1,34 +0,0 @@ -package ai.timefold.solver.core.testdomain.planningid; - -import java.util.List; - -import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty; -import ai.timefold.solver.core.api.domain.solution.PlanningSolution; -import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; -import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; -import ai.timefold.solver.core.testdomain.TestdataSolution; - -@PlanningSolution -public class TestdataStringPlanningIdSolution extends TestdataSolution { - private List stringValueList; - private List stringEntityList; - - @ValueRangeProvider(id = "stringValueRange") - @ProblemFactCollectionProperty - public List getStringValueList() { - return stringValueList; - } - - public void setStringValueList(List stringValueList) { - this.stringValueList = stringValueList; - } - - @PlanningEntityCollectionProperty - public List getStringEntityList() { - return stringEntityList; - } - - public void setStringEntityList(List stringEntityList) { - this.stringEntityList = stringEntityList; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/score/TestdataSimpleScoreSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/score/TestdataSimpleScoreSolution.java deleted file mode 100644 index 2b39a886391..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/score/TestdataSimpleScoreSolution.java +++ /dev/null @@ -1,90 +0,0 @@ -package ai.timefold.solver.core.testdomain.score; - -import java.util.ArrayList; -import java.util.List; - -import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty; -import ai.timefold.solver.core.api.domain.solution.PlanningScore; -import ai.timefold.solver.core.api.domain.solution.PlanningSolution; -import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; -import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; -import ai.timefold.solver.core.testdomain.TestdataEntity; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataValue; - -@PlanningSolution -public class TestdataSimpleScoreSolution extends TestdataObject { - - public static SolutionDescriptor buildSolutionDescriptor() { - return SolutionDescriptor.buildSolutionDescriptor(TestdataSimpleScoreSolution.class, TestdataEntity.class); - } - - public static TestdataSimpleScoreSolution generateSolution() { - return generateSolution(5, 7); - } - - public static TestdataSimpleScoreSolution generateSolution(int valueListSize, int entityListSize) { - TestdataSimpleScoreSolution solution = new TestdataSimpleScoreSolution("Generated Solution 0"); - List valueList = new ArrayList<>(valueListSize); - for (int i = 0; i < valueListSize; i++) { - TestdataValue value = new TestdataValue("Generated Value " + i); - valueList.add(value); - } - solution.setValueList(valueList); - List entityList = new ArrayList<>(entityListSize); - for (int i = 0; i < entityListSize; i++) { - TestdataValue value = valueList.get(i % valueListSize); - TestdataEntity entity = new TestdataEntity("Generated Entity " + i, value); - entityList.add(entity); - } - solution.setEntityList(entityList); - return solution; - } - - private List valueList; - private List entityList; - - private SimpleScore score; - - public TestdataSimpleScoreSolution() { - } - - public TestdataSimpleScoreSolution(String code) { - super(code); - } - - @ValueRangeProvider(id = "valueRange") - @ProblemFactCollectionProperty - public List getValueList() { - return valueList; - } - - public void setValueList(List valueList) { - this.valueList = valueList; - } - - @PlanningEntityCollectionProperty - public List getEntityList() { - return entityList; - } - - public void setEntityList(List entityList) { - this.entityList = entityList; - } - - @PlanningScore - public SimpleScore getScore() { - return score; - } - - public void setScore(SimpleScore score) { - this.score = score; - } - - // ************************************************************************ - // Complex methods - // ************************************************************************ - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseGroup.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseGroup.java index 52480b7e180..340c02cb9fc 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseGroup.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseGroup.java @@ -3,6 +3,7 @@ import ai.timefold.solver.core.api.domain.entity.PlanningEntity; import ai.timefold.solver.core.api.domain.variable.PlanningVariable; import ai.timefold.solver.core.testdomain.TestdataObject; +import ai.timefold.solver.core.testdomain.TestdataValue; /** * A basic (non-list) {@link PlanningVariable} value that is itself a planning entity holding @@ -13,7 +14,7 @@ public class TestdataBasicInverseGroup extends TestdataObject { @PlanningVariable(valueRangeProviderRefs = "ownerRange") - TestdataBasicInverseOwner owner; + TestdataValue owner; public TestdataBasicInverseGroup() { } @@ -22,11 +23,11 @@ public TestdataBasicInverseGroup(String code) { super(code); } - public TestdataBasicInverseOwner getOwner() { + public TestdataValue getOwner() { return owner; } - public void setOwner(TestdataBasicInverseOwner owner) { + public void setOwner(TestdataValue owner) { this.owner = owner; } } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseOwner.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseOwner.java deleted file mode 100644 index a66fc8e2a33..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseOwner.java +++ /dev/null @@ -1,13 +0,0 @@ -package ai.timefold.solver.core.testdomain.shadow.declarative.basicinverse; - -import ai.timefold.solver.core.testdomain.TestdataObject; - -public class TestdataBasicInverseOwner extends TestdataObject { - - public TestdataBasicInverseOwner() { - } - - public TestdataBasicInverseOwner(String code) { - super(code); - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseSolution.java index 7386eb8b210..cbd4f9e02bf 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseSolution.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseSolution.java @@ -8,6 +8,7 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; +import ai.timefold.solver.core.testdomain.TestdataValue; @PlanningSolution public class TestdataBasicInverseSolution { @@ -21,7 +22,7 @@ public class TestdataBasicInverseSolution { @ProblemFactCollectionProperty @ValueRangeProvider(id = "ownerRange") - List ownerList; + List ownerList; @PlanningScore SimpleScore score; @@ -30,7 +31,7 @@ public TestdataBasicInverseSolution() { } public TestdataBasicInverseSolution(List entityList, - List groupList, List ownerList) { + List groupList, List ownerList) { this.entityList = entityList; this.groupList = groupList; this.ownerList = ownerList; @@ -52,11 +53,11 @@ public void setGroupList(List groupList) { this.groupList = groupList; } - public List getOwnerList() { + public List getOwnerList() { return ownerList; } - public void setOwnerList(List ownerList) { + public void setOwnerList(List ownerList) { this.ownerList = ownerList; } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerConstraintProvider.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerConstraintProvider.java deleted file mode 100644 index 6c9fa65876f..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerConstraintProvider.java +++ /dev/null @@ -1,21 +0,0 @@ -package ai.timefold.solver.core.testdomain.shadow.dynamic_follower; - -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.api.score.stream.Constraint; -import ai.timefold.solver.core.api.score.stream.ConstraintCollectors; -import ai.timefold.solver.core.api.score.stream.ConstraintFactory; -import ai.timefold.solver.core.api.score.stream.ConstraintProvider; - -import org.jspecify.annotations.NonNull; - -public class TestdataDynamicFollowerConstraintProvider implements ConstraintProvider { - @Override - public Constraint @NonNull [] defineConstraints(@NonNull ConstraintFactory constraintFactory) { - return new Constraint[] { - constraintFactory.forEach(TestdataDynamicHasValue.class) - .groupBy(TestdataDynamicHasValue::getValue, ConstraintCollectors.count()) - .penalize(SimpleScore.ONE, (value, count) -> count * count) - .asConstraint("Minimize value count") - }; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerEntity.java index 0d761cbe3a6..f1925ac48eb 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerEntity.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerEntity.java @@ -6,11 +6,13 @@ import ai.timefold.solver.core.api.domain.variable.ShadowVariable; import ai.timefold.solver.core.testdomain.TestdataObject; import ai.timefold.solver.core.testdomain.TestdataValue; +import ai.timefold.solver.core.testdomain.shadow.follower.TestdataHasValue; +import ai.timefold.solver.core.testdomain.shadow.follower.TestdataLeaderEntity; @PlanningEntity -public class TestdataDynamicFollowerEntity extends TestdataObject implements TestdataDynamicHasValue { +public class TestdataDynamicFollowerEntity extends TestdataObject implements TestdataHasValue { @PlanningVariable - TestdataDynamicLeaderEntity leader; + TestdataLeaderEntity leader; @ShadowVariable(supplierName = "valueSupplier") TestdataValue value; @@ -22,7 +24,7 @@ public TestdataDynamicFollowerEntity(String code) { super(code); } - public TestdataDynamicFollowerEntity(String code, TestdataDynamicLeaderEntity leader) { + public TestdataDynamicFollowerEntity(String code, TestdataLeaderEntity leader) { super(code); this.leader = leader; } @@ -41,14 +43,14 @@ public TestdataValue valueSupplier() { if (leader == null) { return null; } - return leader.value; + return leader.getValue(); } - public TestdataDynamicLeaderEntity getLeader() { + public TestdataLeaderEntity getLeader() { return leader; } - public void setLeader(TestdataDynamicLeaderEntity leader) { + public void setLeader(TestdataLeaderEntity leader) { this.leader = leader; } } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerSolution.java index e8f973ced9a..83e16ac4f8c 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerSolution.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerSolution.java @@ -12,13 +12,14 @@ import ai.timefold.solver.core.preview.api.domain.metamodel.PlanningSolutionMetaModel; import ai.timefold.solver.core.testdomain.TestdataObject; import ai.timefold.solver.core.testdomain.TestdataValue; +import ai.timefold.solver.core.testdomain.shadow.follower.TestdataLeaderEntity; @PlanningSolution public class TestdataDynamicFollowerSolution extends TestdataObject { public static SolutionDescriptor buildSolutionDescriptor() { return SolutionDescriptor.buildSolutionDescriptor( - TestdataDynamicFollowerSolution.class, TestdataDynamicLeaderEntity.class, TestdataDynamicFollowerEntity.class); + TestdataDynamicFollowerSolution.class, TestdataLeaderEntity.class, TestdataDynamicFollowerEntity.class); } public static PlanningSolutionMetaModel buildMetaModel() { @@ -27,7 +28,7 @@ public static PlanningSolutionMetaModel buildMe @PlanningEntityCollectionProperty @ValueRangeProvider - List leaders; + List leaders; @PlanningEntityCollectionProperty List followers; @@ -41,7 +42,7 @@ public static PlanningSolutionMetaModel buildMe public TestdataDynamicFollowerSolution() { } - public TestdataDynamicFollowerSolution(String code, List leaders, + public TestdataDynamicFollowerSolution(String code, List leaders, List followers, List values) { super(code); @@ -51,12 +52,12 @@ public TestdataDynamicFollowerSolution(String code, List(leaderCount); + var leaders = new ArrayList(leaderCount); var followers = new ArrayList(followerCount); var values = new ArrayList(valueCount); for (int i = 0; i < leaderCount; i++) { - leaders.add(new TestdataDynamicLeaderEntity("Leader %d".formatted(i))); + leaders.add(new TestdataLeaderEntity("Leader %d".formatted(i))); } for (var i = 0; i < followerCount; i++) { @@ -70,11 +71,11 @@ public static TestdataDynamicFollowerSolution generateSolution(int leaderCount, return new TestdataDynamicFollowerSolution("Solution", leaders, followers, values); } - public List getLeaders() { + public List getLeaders() { return leaders; } - public void setLeaders(List leaders) { + public void setLeaders(List leaders) { this.leaders = leaders; } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicHasValue.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicHasValue.java deleted file mode 100644 index 4f186f5e794..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicHasValue.java +++ /dev/null @@ -1,7 +0,0 @@ -package ai.timefold.solver.core.testdomain.shadow.dynamic_follower; - -import ai.timefold.solver.core.testdomain.TestdataValue; - -public interface TestdataDynamicHasValue { - TestdataValue getValue(); -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicLeaderEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicLeaderEntity.java deleted file mode 100644 index bdba14e0c97..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicLeaderEntity.java +++ /dev/null @@ -1,28 +0,0 @@ -package ai.timefold.solver.core.testdomain.shadow.dynamic_follower; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataValue; - -@PlanningEntity -public class TestdataDynamicLeaderEntity extends TestdataObject implements TestdataDynamicHasValue { - @PlanningVariable - TestdataValue value; - - public TestdataDynamicLeaderEntity() { - } - - public TestdataDynamicLeaderEntity(String code) { - super(code); - } - - @Override - public TestdataValue getValue() { - return value; - } - - public void setValue(TestdataValue value) { - this.value = value; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/inverserelation/TestdataInverseRelationEasyScoreCalculator.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/inverserelation/TestdataInverseRelationEasyScoreCalculator.java deleted file mode 100644 index 46fe2dbd882..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/inverserelation/TestdataInverseRelationEasyScoreCalculator.java +++ /dev/null @@ -1,18 +0,0 @@ -package ai.timefold.solver.core.testdomain.shadow.inverserelation; - -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.api.score.calculator.EasyScoreCalculator; - -import org.jspecify.annotations.NonNull; - -public class TestdataInverseRelationEasyScoreCalculator - implements EasyScoreCalculator { - @Override - public @NonNull SimpleScore calculateScore(@NonNull TestdataInverseRelationSolution testdataInverseRelationSolution) { - int score = 0; - for (var value : testdataInverseRelationSolution.getValueList()) { - score -= value.getEntities().size() * value.getEntities().size(); - } - return SimpleScore.of(score); - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesBaseValue.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesBaseValue.java deleted file mode 100644 index d6126fc1ad3..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesBaseValue.java +++ /dev/null @@ -1,28 +0,0 @@ -package ai.timefold.solver.core.testdomain.shadow.method_variables; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PreviousElementShadowVariable; -import ai.timefold.solver.core.testdomain.TestdataObject; - -@PlanningEntity -public class TestdataDeclarativeMethodVariablesBaseValue extends TestdataObject { - TestdataDeclarativeMethodVariablesBaseValue previous; - - public TestdataDeclarativeMethodVariablesBaseValue() { - super(); - } - - public TestdataDeclarativeMethodVariablesBaseValue(String code) { - super(code); - } - - @PreviousElementShadowVariable(sourceVariableName = "values") - public TestdataDeclarativeMethodVariablesBaseValue getPrevious() { - return previous; - } - - public void setPrevious( - TestdataDeclarativeMethodVariablesBaseValue previous) { - this.previous = previous; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesConstraintProvider.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesConstraintProvider.java deleted file mode 100644 index 82070093ce7..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesConstraintProvider.java +++ /dev/null @@ -1,27 +0,0 @@ -package ai.timefold.solver.core.testdomain.shadow.method_variables; - -import ai.timefold.solver.core.api.score.HardSoftScore; -import ai.timefold.solver.core.api.score.stream.Constraint; -import ai.timefold.solver.core.api.score.stream.ConstraintFactory; -import ai.timefold.solver.core.api.score.stream.ConstraintProvider; - -import org.jspecify.annotations.NonNull; - -public class TestdataDeclarativeMethodVariablesConstraintProvider implements ConstraintProvider { - @Override - public Constraint @NonNull [] defineConstraints(@NonNull ConstraintFactory constraintFactory) { - return new Constraint[] { - constraintFactory.forEach(TestdataDeclarativeMethodVariablesSubclassValue.class) - .filter(value -> value.getCodeSum() != null) - .expand(value -> value.getCodeSum().chars().distinct().count()) - .filter((value, distinctCount) -> distinctCount.intValue() != value.getCodeSum().length()) - .penalize(HardSoftScore.ONE_HARD, - (value, distinctCount) -> value.getCodeSum().length() - distinctCount.intValue()) - .asConstraint("Duplicate characters in code sum"), - constraintFactory.forEach(TestdataDeclarativeMethodVariablesSubclassValue.class) - .filter(value -> value.getCodeSum() != null) - .reward(HardSoftScore.ONE_SOFT, value -> value.getCodeSum().length()) - .asConstraint("Maximize code sum length") - }; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesEntity.java index 54a81405290..4abb23c26a1 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesEntity.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesEntity.java @@ -6,10 +6,11 @@ import ai.timefold.solver.core.api.domain.entity.PlanningEntity; import ai.timefold.solver.core.api.domain.variable.PlanningListVariable; import ai.timefold.solver.core.testdomain.TestdataObject; +import ai.timefold.solver.core.testdomain.shadow.extended.TestdataDeclarativeExtendedBaseValue; @PlanningEntity public class TestdataDeclarativeMethodVariablesEntity extends TestdataObject { - List values; + List values; public TestdataDeclarativeMethodVariablesEntity() { super(); @@ -22,12 +23,12 @@ public TestdataDeclarativeMethodVariablesEntity(String code) { } @PlanningListVariable - public List getValues() { + public List getValues() { return values; } public void setValues( - List values) { + List values) { this.values = values; } } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSolution.java index 2d9a556de93..bf4f790f444 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSolution.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSolution.java @@ -8,6 +8,7 @@ import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.HardSoftScore; import ai.timefold.solver.core.testdomain.TestdataObject; +import ai.timefold.solver.core.testdomain.shadow.extended.TestdataDeclarativeExtendedBaseValue; @PlanningSolution public class TestdataDeclarativeMethodVariablesSolution extends TestdataObject { @@ -16,7 +17,7 @@ public class TestdataDeclarativeMethodVariablesSolution extends TestdataObject { @PlanningEntityCollectionProperty @ValueRangeProvider - List values; + List values; @PlanningScore HardSoftScore score; @@ -30,12 +31,12 @@ public void setEntities( this.entities = entities; } - public List getValues() { + public List getValues() { return values; } public void setValues( - List values) { + List values) { this.values = values; } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSubclassValue.java b/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSubclassValue.java deleted file mode 100644 index 75134166bda..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSubclassValue.java +++ /dev/null @@ -1,42 +0,0 @@ -package ai.timefold.solver.core.testdomain.shadow.method_variables; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.ShadowSources; -import ai.timefold.solver.core.api.domain.variable.ShadowVariable; - -@PlanningEntity -public class TestdataDeclarativeMethodVariablesSubclassValue extends TestdataDeclarativeMethodVariablesBaseValue { - String codeSum; - - public TestdataDeclarativeMethodVariablesSubclassValue() { - super(); - } - - public TestdataDeclarativeMethodVariablesSubclassValue(String code) { - super(code); - codeSum = code; - } - - @Override - public TestdataDeclarativeMethodVariablesSubclassValue getPrevious() { - return (TestdataDeclarativeMethodVariablesSubclassValue) previous; - } - - @ShadowVariable(supplierName = "codeSumSupplier") - public String getCodeSum() { - return codeSum; - } - - public void setCodeSum(String codeSum) { - this.codeSum = codeSum; - } - - @ShadowSources("previous.codeSum") - public String codeSumSupplier() { - if (previous == null) { - return code; - } else { - return getPrevious().codeSum + code; - } - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/sort/invalid/TestdataInvalidMixedComparatorSortableEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/sort/invalid/TestdataInvalidMixedComparatorSortableEntity.java deleted file mode 100644 index 6f9f663e9e9..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/sort/invalid/TestdataInvalidMixedComparatorSortableEntity.java +++ /dev/null @@ -1,41 +0,0 @@ -package ai.timefold.solver.core.testdomain.sort.invalid; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.common.DummyValueComparator; -import ai.timefold.solver.core.testdomain.common.DummyValueComparatorFactory; -import ai.timefold.solver.core.testdomain.common.TestdataSortableValue; - -@PlanningEntity -public class TestdataInvalidMixedComparatorSortableEntity extends TestdataObject { - - @PlanningVariable(valueRangeProviderRefs = "valueRange", comparatorClass = DummyValueComparator.class, - comparatorFactoryClass = DummyValueComparatorFactory.class) - private TestdataSortableValue value; - private int difficulty; - - public TestdataInvalidMixedComparatorSortableEntity() { - } - - public TestdataInvalidMixedComparatorSortableEntity(String code, int difficulty) { - super(code); - this.difficulty = difficulty; - } - - public TestdataSortableValue getValue() { - return value; - } - - public void setValue(TestdataSortableValue value) { - this.value = value; - } - - public int getDifficulty() { - return difficulty; - } - - public void setDifficulty(int difficulty) { - this.difficulty = difficulty; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/sort/invalid/TestdataInvalidMixedComparatorSortableSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/sort/invalid/TestdataInvalidMixedComparatorSortableSolution.java deleted file mode 100644 index bc7e3045606..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/sort/invalid/TestdataInvalidMixedComparatorSortableSolution.java +++ /dev/null @@ -1,52 +0,0 @@ -package ai.timefold.solver.core.testdomain.sort.invalid; - -import java.util.List; - -import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty; -import ai.timefold.solver.core.api.domain.solution.PlanningScore; -import ai.timefold.solver.core.api.domain.solution.PlanningSolution; -import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; -import ai.timefold.solver.core.api.score.HardSoftScore; -import ai.timefold.solver.core.testdomain.common.TestdataSortableValue; - -@PlanningSolution -public class TestdataInvalidMixedComparatorSortableSolution { - - private List valueList; - private List entityList; - private HardSoftScore score; - - @ValueRangeProvider(id = "valueRange") - @PlanningEntityCollectionProperty - public List getValueList() { - return valueList; - } - - public void setValueList(List valueList) { - this.valueList = valueList; - } - - @PlanningEntityCollectionProperty - public List getEntityList() { - return entityList; - } - - public void setEntityList(List entityList) { - this.entityList = entityList; - } - - @PlanningScore - public HardSoftScore getScore() { - return score; - } - - public void setScore(HardSoftScore score) { - this.score = score; - } - - public void removeEntity(TestdataInvalidMixedComparatorSortableEntity entity) { - this.entityList = entityList.stream() - .filter(e -> e != entity) - .toList(); - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/TestdataEntityProvidingConstraintProvider.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/TestdataEntityProvidingConstraintProvider.java deleted file mode 100644 index 9aa620d9427..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/TestdataEntityProvidingConstraintProvider.java +++ /dev/null @@ -1,23 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.entityproviding; - -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.api.score.stream.Constraint; -import ai.timefold.solver.core.api.score.stream.ConstraintFactory; -import ai.timefold.solver.core.api.score.stream.ConstraintProvider; - -import org.jspecify.annotations.NonNull; - -public final class TestdataEntityProvidingConstraintProvider implements ConstraintProvider { - - @Override - public Constraint @NonNull [] defineConstraints(@NonNull ConstraintFactory constraintFactory) { - return new Constraint[] { alwaysPenalizingConstraint(constraintFactory) }; - } - - private Constraint alwaysPenalizingConstraint(ConstraintFactory constraintFactory) { - return constraintFactory.forEach(TestdataEntityProvidingEntity.class) - .penalize(SimpleScore.ONE) - .asConstraint("Always penalize"); - } - -} \ No newline at end of file diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidEntityProvidingWithParameterEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidEntityProvidingWithParameterEntity.java deleted file mode 100644 index c7ae6d65534..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidEntityProvidingWithParameterEntity.java +++ /dev/null @@ -1,64 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.entityproviding.parameter.invalid; - -import java.util.List; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataValue; -import ai.timefold.solver.core.testdomain.valuerange.entityproviding.parameter.TestdataEntityProvidingWithParameterSolution; - -@PlanningEntity -public class TestdataInvalidEntityProvidingWithParameterEntity extends TestdataObject { - - private List valueRange; - - private TestdataValue value; - - public TestdataInvalidEntityProvidingWithParameterEntity() { - // Required for cloning - } - - public TestdataInvalidEntityProvidingWithParameterEntity(String code, List valueRange) { - this(code, valueRange, null); - } - - public TestdataInvalidEntityProvidingWithParameterEntity(String code, List valueRange, - TestdataValue value) { - super(code); - this.valueRange = valueRange; - this.value = value; - } - - public TestdataValue getValue() { - return value; - } - - public void setValue(TestdataValue value) { - this.value = value; - } - - public void setValueRange(List valueRange) { - this.valueRange = valueRange; - } - - public List getValueRange1(TestdataEntityProvidingWithParameterSolution ignoredSolution) { - return valueRange; - } - - private void setValueRange1(List valueRange) { - this.valueRange = valueRange; - } - - List getValueRange2(TestdataEntityProvidingWithParameterSolution ignoredSolution) { - return valueRange; - } - - protected void setValueRange2(List valueRange) { - this.valueRange = valueRange; - } - - public List getValueRangeWithoutSetter() { - return valueRange; - } - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidTypeEntityProvidingWithParameterEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidTypeEntityProvidingWithParameterEntity.java deleted file mode 100644 index fe1a3ee4789..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidTypeEntityProvidingWithParameterEntity.java +++ /dev/null @@ -1,63 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.entityproviding.parameter.invalid; - -import java.util.List; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.impl.domain.entity.descriptor.EntityDescriptor; -import ai.timefold.solver.core.impl.domain.variable.descriptor.GenuineVariableDescriptor; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataSolution; -import ai.timefold.solver.core.testdomain.TestdataValue; - -@PlanningEntity -public class TestdataInvalidTypeEntityProvidingWithParameterEntity extends TestdataObject { - - public static EntityDescriptor buildEntityDescriptor() { - return TestdataInvalidTypeEntityProvidingWithParameterSolution.buildSolutionDescriptor() - .findEntityDescriptorOrFail(TestdataInvalidTypeEntityProvidingWithParameterEntity.class); - } - - public static GenuineVariableDescriptor - buildVariableDescriptorForValueRange() { - return buildEntityDescriptor().getGenuineVariableDescriptor("valueRange"); - } - - private List valueRange; - - private TestdataValue value; - - public TestdataInvalidTypeEntityProvidingWithParameterEntity() { - // Required for cloning - } - - public TestdataInvalidTypeEntityProvidingWithParameterEntity(String code, List valueRange) { - this(code, valueRange, null); - } - - public TestdataInvalidTypeEntityProvidingWithParameterEntity(String code, List valueRange, - TestdataValue value) { - super(code); - this.valueRange = valueRange; - this.value = value; - } - - @PlanningVariable(valueRangeProviderRefs = "valueRange") - public TestdataValue getValue() { - return value; - } - - public void setValue(TestdataValue value) { - this.value = value; - } - - @ValueRangeProvider(id = "valueRange") - public List getValueRange(TestdataSolution solution) { - return valueRange; - } - - public void setValueRange(List valueRange) { - this.valueRange = valueRange; - } -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidTypeEntityProvidingWithParameterSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidTypeEntityProvidingWithParameterSolution.java deleted file mode 100644 index e5f11621bb8..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidTypeEntityProvidingWithParameterSolution.java +++ /dev/null @@ -1,50 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.entityproviding.parameter.invalid; - -import java.util.List; - -import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty; -import ai.timefold.solver.core.api.domain.solution.PlanningScore; -import ai.timefold.solver.core.api.domain.solution.PlanningSolution; -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; -import ai.timefold.solver.core.testdomain.TestdataObject; - -@PlanningSolution -public class TestdataInvalidTypeEntityProvidingWithParameterSolution extends TestdataObject { - - public static SolutionDescriptor buildSolutionDescriptor() { - return SolutionDescriptor.buildSolutionDescriptor(TestdataInvalidTypeEntityProvidingWithParameterSolution.class, - TestdataInvalidTypeEntityProvidingWithParameterEntity.class); - } - - private List entityList; - - private SimpleScore score; - - public TestdataInvalidTypeEntityProvidingWithParameterSolution() { - // Required for cloning - } - - public TestdataInvalidTypeEntityProvidingWithParameterSolution(String code) { - super(code); - } - - @PlanningEntityCollectionProperty - public List getEntityList() { - return entityList; - } - - public void setEntityList(List entityList) { - this.entityList = entityList; - } - - @PlanningScore - public SimpleScore getScore() { - return score; - } - - public void setScore(SimpleScore score) { - this.score = score; - } - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/unassignedvar/TestdataAllowsUnassignedEntityProvidingConstraintProvider.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/unassignedvar/TestdataAllowsUnassignedEntityProvidingConstraintProvider.java deleted file mode 100644 index 13a15c94152..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/unassignedvar/TestdataAllowsUnassignedEntityProvidingConstraintProvider.java +++ /dev/null @@ -1,23 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.entityproviding.unassignedvar; - -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.api.score.stream.Constraint; -import ai.timefold.solver.core.api.score.stream.ConstraintFactory; -import ai.timefold.solver.core.api.score.stream.ConstraintProvider; - -import org.jspecify.annotations.NonNull; - -public final class TestdataAllowsUnassignedEntityProvidingConstraintProvider implements ConstraintProvider { - - @Override - public Constraint @NonNull [] defineConstraints(@NonNull ConstraintFactory constraintFactory) { - return new Constraint[] { alwaysPenalizingConstraint(constraintFactory) }; - } - - private Constraint alwaysPenalizingConstraint(ConstraintFactory constraintFactory) { - return constraintFactory.forEach(TestdataAllowsUnassignedEntityProvidingEntity.class) - .penalize(SimpleScore.ONE) - .asConstraint("Always penalize"); - } - -} \ No newline at end of file diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeConstraintProvider.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeConstraintProvider.java deleted file mode 100644 index fd21a306aa7..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeConstraintProvider.java +++ /dev/null @@ -1,23 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.incomplete; - -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.api.score.stream.Constraint; -import ai.timefold.solver.core.api.score.stream.ConstraintFactory; -import ai.timefold.solver.core.api.score.stream.ConstraintProvider; - -import org.jspecify.annotations.NonNull; - -public final class TestdataIncompleteValueRangeConstraintProvider implements ConstraintProvider { - - @Override - public Constraint @NonNull [] defineConstraints(@NonNull ConstraintFactory constraintFactory) { - return new Constraint[] { alwaysPenalizingConstraint(constraintFactory) }; - } - - private Constraint alwaysPenalizingConstraint(ConstraintFactory constraintFactory) { - return constraintFactory.forEach(TestdataIncompleteValueRangeEntity.class) - .penalize(SimpleScore.ONE) - .asConstraint("Always penalize"); - } - -} \ No newline at end of file diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeEntity.java deleted file mode 100644 index 2fe07f3c1ed..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeEntity.java +++ /dev/null @@ -1,45 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.incomplete; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.impl.domain.entity.descriptor.EntityDescriptor; -import ai.timefold.solver.core.impl.domain.variable.descriptor.GenuineVariableDescriptor; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataValue; - -@PlanningEntity -public class TestdataIncompleteValueRangeEntity extends TestdataObject { - - public static EntityDescriptor buildEntityDescriptor() { - return TestdataIncompleteValueRangeSolution.buildSolutionDescriptor() - .findEntityDescriptorOrFail(TestdataIncompleteValueRangeEntity.class); - } - - public static GenuineVariableDescriptor buildVariableDescriptorForValue() { - return buildEntityDescriptor().getGenuineVariableDescriptor("value"); - } - - private TestdataValue value; - - public TestdataIncompleteValueRangeEntity() { - } - - public TestdataIncompleteValueRangeEntity(String code) { - super(code); - } - - public TestdataIncompleteValueRangeEntity(String code, TestdataValue value) { - this(code); - this.value = value; - } - - @PlanningVariable(valueRangeProviderRefs = "valueRange") - public TestdataValue getValue() { - return value; - } - - public void setValue(TestdataValue value) { - this.value = value; - } - -} \ No newline at end of file diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeSolution.java index 82c5b81ccae..bcd7d4ba71e 100644 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeSolution.java +++ b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeSolution.java @@ -11,6 +11,7 @@ import ai.timefold.solver.core.api.score.SimpleScore; import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; import ai.timefold.solver.core.preview.api.domain.metamodel.PlanningSolutionMetaModel; +import ai.timefold.solver.core.testdomain.TestdataEntity; import ai.timefold.solver.core.testdomain.TestdataObject; import ai.timefold.solver.core.testdomain.TestdataValue; @@ -19,7 +20,7 @@ public class TestdataIncompleteValueRangeSolution extends TestdataObject { public static SolutionDescriptor buildSolutionDescriptor() { return SolutionDescriptor.buildSolutionDescriptor(TestdataIncompleteValueRangeSolution.class, - TestdataIncompleteValueRangeEntity.class); + TestdataEntity.class); } public static PlanningSolutionMetaModel buildMetaModel() { @@ -47,10 +48,10 @@ private static TestdataIncompleteValueRangeSolution generateSolution(int valueLi valueList.add(value); } solution.setValueList(valueList); - var entityList = new ArrayList(entityListSize); + var entityList = new ArrayList(entityListSize); for (var i = 0; i < entityListSize; i++) { var value = initialized ? valueList.get(i % valueListSize) : null; - var entity = new TestdataIncompleteValueRangeEntity("Generated Entity " + i, value); + var entity = new TestdataEntity("Generated Entity " + i, value); entityList.add(entity); } solution.setEntityList(entityList); @@ -59,7 +60,7 @@ private static TestdataIncompleteValueRangeSolution generateSolution(int valueLi private List valueList; private List valueListNotInValueRange; - private List entityList; + private List entityList; private SimpleScore score; @@ -90,11 +91,11 @@ public void setValueListNotInValueRange(List valueListNotInValueR } @PlanningEntityCollectionProperty - public List getEntityList() { + public List getEntityList() { return entityList; } - public void setEntityList(List entityList) { + public void setEntityList(List entityList) { this.entityList = entityList; } diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/parameter/invalid/TestdataInvalidParameterEntity.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/parameter/invalid/TestdataInvalidParameterEntity.java deleted file mode 100644 index 118efd321cd..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/parameter/invalid/TestdataInvalidParameterEntity.java +++ /dev/null @@ -1,42 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.parameter.invalid; - -import ai.timefold.solver.core.api.domain.entity.PlanningEntity; -import ai.timefold.solver.core.api.domain.variable.PlanningVariable; -import ai.timefold.solver.core.impl.domain.entity.descriptor.EntityDescriptor; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataValue; -import ai.timefold.solver.core.testdomain.valuerange.entityproviding.parameter.invalid.TestdataInvalidCountEntityProvidingWithParameterSolution; - -@PlanningEntity -public class TestdataInvalidParameterEntity extends TestdataObject { - - public static EntityDescriptor buildEntityDescriptor() { - return TestdataInvalidCountEntityProvidingWithParameterSolution.buildSolutionDescriptor() - .findEntityDescriptorOrFail(TestdataInvalidParameterEntity.class); - } - - private TestdataValue value; - - public TestdataInvalidParameterEntity() { - // Required for cloning - } - - public TestdataInvalidParameterEntity(String code) { - this(code, null); - } - - public TestdataInvalidParameterEntity(String code, TestdataValue value) { - super(code); - this.value = value; - } - - @PlanningVariable(valueRangeProviderRefs = "valueRange") - public TestdataValue getValue() { - return value; - } - - public void setValue(TestdataValue value) { - this.value = value; - } - -} diff --git a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/parameter/invalid/TestdataInvalidParameterSolution.java b/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/parameter/invalid/TestdataInvalidParameterSolution.java deleted file mode 100644 index ee13c661856..00000000000 --- a/core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/parameter/invalid/TestdataInvalidParameterSolution.java +++ /dev/null @@ -1,62 +0,0 @@ -package ai.timefold.solver.core.testdomain.valuerange.parameter.invalid; - -import java.util.List; - -import ai.timefold.solver.core.api.domain.solution.PlanningEntityCollectionProperty; -import ai.timefold.solver.core.api.domain.solution.PlanningScore; -import ai.timefold.solver.core.api.domain.solution.PlanningSolution; -import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; -import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor; -import ai.timefold.solver.core.testdomain.TestdataObject; -import ai.timefold.solver.core.testdomain.TestdataValue; - -@PlanningSolution -public class TestdataInvalidParameterSolution extends TestdataObject { - - public static SolutionDescriptor buildSolutionDescriptor() { - return SolutionDescriptor.buildSolutionDescriptor(TestdataInvalidParameterSolution.class, - TestdataInvalidParameterEntity.class); - } - - private List entityList; - private List valueList; - - private SimpleScore score; - - public TestdataInvalidParameterSolution() { - // Required for cloning - } - - public TestdataInvalidParameterSolution(String code) { - super(code); - } - - @PlanningEntityCollectionProperty - public List getEntityList() { - return entityList; - } - - public void setEntityList(List entityList) { - this.entityList = entityList; - } - - @ValueRangeProvider(id = "valueRange") - public List getValueList(TestdataInvalidParameterSolution solution) { - return valueList; - } - - public void setValueList(List valueList) { - this.valueList = valueList; - } - - @PlanningScore - public SimpleScore getScore() { - return score; - } - - public void setScore(SimpleScore score) { - this.score = score; - } - -} diff --git a/quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningEntityTest.java b/quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningEntityTest.java index 8e27283568f..23963d5871c 100644 --- a/quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningEntityTest.java +++ b/quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningEntityTest.java @@ -7,7 +7,7 @@ import ai.timefold.solver.core.testconstraint.DummyConstraintProvider; import ai.timefold.solver.core.testdomain.immutable.TestdataSolution; import ai.timefold.solver.core.testdomain.immutable.record.TestdataRecordEntity; -import ai.timefold.solver.core.testdomain.immutable.record.TestdataRecordValue; +import ai.timefold.solver.core.testdomain.record.TestdataRecordValue; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.JavaArchive; diff --git a/quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningSolutionTest.java b/quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningSolutionTest.java index 27bfc89dac0..13de88aebc1 100644 --- a/quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningSolutionTest.java +++ b/quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningSolutionTest.java @@ -7,7 +7,7 @@ import ai.timefold.solver.core.testconstraint.DummyConstraintProvider; import ai.timefold.solver.core.testdomain.immutable.record.TestdataRecordEntity; import ai.timefold.solver.core.testdomain.immutable.record.TestdataRecordSolution; -import ai.timefold.solver.core.testdomain.immutable.record.TestdataRecordValue; +import ai.timefold.solver.core.testdomain.record.TestdataRecordValue; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.JavaArchive;