Skip to content

Commit 7df5be8

Browse files
committed
chore: address sonar
1 parent 78ac794 commit 7df5be8

8 files changed

Lines changed: 51 additions & 1 deletion

File tree

core/src/main/java/ai/timefold/solver/core/impl/heuristic/selector/list/SubListSelectorFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ private EntityIndependentValueSelector<Solution_> buildEntityIndependentValueSel
114114
HeuristicConfigPolicy<Solution_> configPolicy, EntityDescriptor<Solution_> entityDescriptor,
115115
SelectionCacheType minimumCacheType, SelectionOrder inheritedSelectionOrder) {
116116
ValueSelectorConfig valueSelectorConfig =
117-
Objects.requireNonNullElseGet(config.getValueSelectorConfig(), ValueSelectorConfig::new);
117+
config != null && config.getValueSelectorConfig() != null ? config.getValueSelectorConfig()
118+
: new ValueSelectorConfig();
118119
// Mixed models require that the variable name be set
119120
if (configPolicy.getSolutionDescriptor().hasBothBasicAndListVariables()
120121
&& valueSelectorConfig.getVariableName() == null) {

core/src/test/java/ai/timefold/solver/core/impl/heuristic/selector/move/composite/UnionMoveSelectorTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static ai.timefold.solver.core.testutil.PlannerAssert.assertAllCodesOfMoveSelector;
44
import static ai.timefold.solver.core.testutil.PlannerAssert.verifyPhaseLifecycle;
5+
import static org.assertj.core.api.Assertions.assertThat;
56
import static org.mockito.Mockito.mock;
67
import static org.mockito.Mockito.when;
78

@@ -11,6 +12,7 @@
1112
import java.util.Map;
1213
import java.util.Random;
1314

15+
import ai.timefold.solver.core.config.heuristic.selector.move.composite.UnionMoveSelectorConfig;
1416
import ai.timefold.solver.core.impl.heuristic.move.DummyMove;
1517
import ai.timefold.solver.core.impl.heuristic.selector.SelectorTestUtils;
1618
import ai.timefold.solver.core.impl.heuristic.selector.move.MoveSelector;
@@ -211,4 +213,9 @@ void emptyBiasedRandomSelection() {
211213
verifyPhaseLifecycle(childMoveSelectorList.get(1), 1, 1, 1);
212214
}
213215

216+
@Test
217+
void testEnableNearbyMixedModel() {
218+
var moveSelectorConfig = new UnionMoveSelectorConfig();
219+
assertThat(moveSelectorConfig.canEnableNearbyInMixedModels()).isFalse();
220+
}
214221
}

core/src/test/java/ai/timefold/solver/core/impl/heuristic/selector/move/generic/ChangeMoveTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
import ai.timefold.solver.core.api.score.buildin.simple.SimpleScore;
1111
import ai.timefold.solver.core.api.score.director.ScoreDirector;
12+
import ai.timefold.solver.core.config.heuristic.selector.move.generic.ChangeMoveSelectorConfig;
13+
import ai.timefold.solver.core.config.heuristic.selector.move.generic.SwapMoveSelectorConfig;
1214
import ai.timefold.solver.core.impl.score.director.easy.EasyScoreDirectorFactory;
1315
import ai.timefold.solver.core.testdomain.TestdataEntity;
1416
import ai.timefold.solver.core.testdomain.TestdataSolution;
@@ -168,4 +170,9 @@ void toStringTestMultiVar() {
168170
assertThat(new ChangeMove<>(variableDescriptor, c, v3)).hasToString("c {v4 -> v3}");
169171
}
170172

173+
@Test
174+
void testEnableNearbyMixedModel() {
175+
var moveSelectorConfig = new ChangeMoveSelectorConfig();
176+
assertThat(moveSelectorConfig.canEnableNearbyInMixedModels()).isFalse();
177+
}
171178
}

core/src/test/java/ai/timefold/solver/core/impl/heuristic/selector/move/generic/SwapMoveTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import ai.timefold.solver.core.api.score.buildin.simple.SimpleScore;
1212
import ai.timefold.solver.core.api.score.director.ScoreDirector;
13+
import ai.timefold.solver.core.config.heuristic.selector.move.generic.SwapMoveSelectorConfig;
1314
import ai.timefold.solver.core.impl.score.director.easy.EasyScoreDirectorFactory;
1415
import ai.timefold.solver.core.testdomain.TestdataEntity;
1516
import ai.timefold.solver.core.testdomain.TestdataSolution;
@@ -259,4 +260,9 @@ void toStringTestMultiVar() {
259260
assertThat(new SwapMove<>(variableDescriptorList, c, b)).hasToString("c {v2, v4, w2} <-> b {v1, v3, w1}");
260261
}
261262

263+
@Test
264+
void testEnableNearbyMixedModel() {
265+
var moveSelectorConfig = new SwapMoveSelectorConfig();
266+
assertThat(moveSelectorConfig.canEnableNearbyInMixedModels()).isFalse();
267+
}
262268
}

core/src/test/java/ai/timefold/solver/core/impl/heuristic/selector/move/generic/chained/TailChainSwapMoveTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
import ai.timefold.solver.core.api.score.buildin.simple.SimpleScore;
1010
import ai.timefold.solver.core.api.score.director.ScoreDirector;
11+
import ai.timefold.solver.core.config.heuristic.selector.move.generic.SwapMoveSelectorConfig;
12+
import ai.timefold.solver.core.config.heuristic.selector.move.generic.chained.TailChainSwapMoveSelectorConfig;
1113
import ai.timefold.solver.core.impl.domain.solution.descriptor.SolutionDescriptor;
1214
import ai.timefold.solver.core.impl.domain.variable.anchor.AnchorVariableDemand;
1315
import ai.timefold.solver.core.impl.domain.variable.anchor.AnchorVariableSupply;
@@ -292,4 +294,10 @@ void extractPlanningEntitiesWithRightEntityNull() {
292294
move.doMoveOnGenuineVariables(innerScoreDirector);
293295
assertThat(move.getPlanningEntities()).doesNotContainNull();
294296
}
297+
298+
@Test
299+
void testEnableNearbyMixedModel() {
300+
var moveSelectorConfig = new TailChainSwapMoveSelectorConfig();
301+
assertThat(moveSelectorConfig.canEnableNearbyInMixedModels()).isFalse();
302+
}
295303
}

core/src/test/java/ai/timefold/solver/core/impl/heuristic/selector/move/generic/list/ListChangeMoveTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.stream.Stream;
1313

1414
import ai.timefold.solver.core.api.score.director.ScoreDirector;
15+
import ai.timefold.solver.core.config.heuristic.selector.move.generic.list.ListChangeMoveSelectorConfig;
1516
import ai.timefold.solver.core.impl.domain.variable.descriptor.ListVariableDescriptor;
1617
import ai.timefold.solver.core.impl.score.director.InnerScoreDirector;
1718
import ai.timefold.solver.core.testdomain.TestdataObject;
@@ -188,4 +189,10 @@ void toStringTest() {
188189
assertThat(new ListChangeMove<>(variableDescriptor, e1, 1, e1, 0)).hasToString("2 {e1[1] -> e1[0]}");
189190
assertThat(new ListChangeMove<>(variableDescriptor, e1, 0, e2, 1)).hasToString("1 {e1[0] -> e2[1]}");
190191
}
192+
193+
@Test
194+
void testEnableNearbyMixedModel() {
195+
var moveSelectorConfig = new ListChangeMoveSelectorConfig();
196+
assertThat(moveSelectorConfig.canEnableNearbyInMixedModels()).isTrue();
197+
}
191198
}

core/src/test/java/ai/timefold/solver/core/impl/heuristic/selector/move/generic/list/ListSwapMoveTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static org.mockito.Mockito.verify;
88

99
import ai.timefold.solver.core.api.score.director.ScoreDirector;
10+
import ai.timefold.solver.core.config.heuristic.selector.move.generic.list.ListSwapMoveSelectorConfig;
1011
import ai.timefold.solver.core.impl.domain.variable.descriptor.ListVariableDescriptor;
1112
import ai.timefold.solver.core.impl.move.director.MoveDirector;
1213
import ai.timefold.solver.core.impl.score.director.InnerScoreDirector;
@@ -137,4 +138,10 @@ void toStringTest() {
137138
assertThat(new ListSwapMove<>(variableDescriptor, e1, 0, e1, 1)).hasToString("1 {e1[0]} <-> 2 {e1[1]}");
138139
assertThat(new ListSwapMove<>(variableDescriptor, e1, 1, e2, 0)).hasToString("2 {e1[1]} <-> 3 {e2[0]}");
139140
}
141+
142+
@Test
143+
void testEnableNearbyMixedModel() {
144+
var moveSelectorConfig = new ListSwapMoveSelectorConfig();
145+
assertThat(moveSelectorConfig.canEnableNearbyInMixedModels()).isTrue();
146+
}
140147
}

core/src/test/java/ai/timefold/solver/core/impl/heuristic/selector/move/generic/list/kopt/KOptListMoveTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.List;
1212
import java.util.function.Function;
1313

14+
import ai.timefold.solver.core.config.heuristic.selector.move.generic.list.kopt.KOptListMoveSelectorConfig;
1415
import ai.timefold.solver.core.impl.domain.variable.ListVariableStateDemand;
1516
import ai.timefold.solver.core.impl.domain.variable.ListVariableStateSupply;
1617
import ai.timefold.solver.core.impl.domain.variable.descriptor.ListVariableDescriptor;
@@ -548,6 +549,12 @@ void testIsFeasible() {
548549
assertThat(kOptListMove.isMoveDoable(scoreDirector)).isFalse();
549550
}
550551

552+
@Test
553+
void testEnableNearbyMixedModel() {
554+
var moveSelectorConfig = new KOptListMoveSelectorConfig();
555+
assertThat(moveSelectorConfig.canEnableNearbyInMixedModels()).isTrue();
556+
}
557+
551558
/**
552559
* Create a sequential or non-sequential k-opt from the supplied pairs of undirected removed and added edges.
553560
*

0 commit comments

Comments
 (0)