Skip to content

Commit b64aa2f

Browse files
committed
Coverage
1 parent 6a8d0ee commit b64aa2f

File tree

3 files changed

+333
-378
lines changed

3 files changed

+333
-378
lines changed

core/src/main/java/ai/timefold/solver/core/impl/bavet/common/ExistsCounterHandle.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ final class ExistsCounterHandle<LeftTuple_ extends AbstractTuple> {
2929
}
3030

3131
public void removeByLeft() {
32-
rightHandleSet.remove(this);
32+
rightHandleSet.remove(this); // The counter will be removed from the left handle set by the caller.
3333
}
3434

3535
public void removeByRight() {
36-
counter.leftHandleSet.remove(this);
36+
counter.leftHandleSet.remove(this); // The counter will be removed from the right handle set by the caller.
3737
}
3838

3939
}

core/src/main/java/ai/timefold/solver/core/impl/bavet/common/index/IndexedSet.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,7 @@ public void remove(T element) {
9191
}
9292
if (insertionPosition == lastElementPosition) {
9393
// The element was the last one added; we can simply remove it.
94-
elementList.remove(insertionPosition);
95-
lastElementPosition--;
94+
elementList.remove(lastElementPosition--);
9695
} else {
9796
// We replace the element with null, creating a gap.
9897
elementList.set(insertionPosition, null);
@@ -210,8 +209,7 @@ private void forEachCompacting(Consumer<T> elementConsumer) {
210209

211210
private @Nullable T removeLastNonGap(int gapPosition) {
212211
while (lastElementPosition >= gapPosition) {
213-
var lastRemovedElement = elementList.remove(lastElementPosition);
214-
lastElementPosition--;
212+
var lastRemovedElement = elementList.remove(lastElementPosition--);
215213
if (lastRemovedElement != null) {
216214
return lastRemovedElement;
217215
}
@@ -285,20 +283,15 @@ public void clear(Consumer<T> elementConsumer) {
285283
forceClear();
286284
return;
287285
}
288-
var oldLastElementPosition = lastElementPosition;
289-
for (var i = 0; i <= oldLastElementPosition; i++) {
286+
for (var i = 0; i <= lastElementPosition; i++) {
290287
var element = elementList.get(i);
291288
if (element == null) {
292289
continue;
293290
}
294291
elementConsumer.accept(element);
295-
if (lastElementPosition != oldLastElementPosition) {
296-
throw new IllegalStateException("Impossible state: the IndexedSet was modified while being cleared.");
297-
}
298292
elementPositionTracker.clearPosition(element);
299293
// We can stop early once all non-gap elements have been processed.
300-
nonGapCount--;
301-
if (nonGapCount == 0) {
294+
if (--nonGapCount == 0) {
302295
break;
303296
}
304297
}

0 commit comments

Comments
 (0)