Skip to content

Commit 71b4959

Browse files
committed
core: consider skipped stops
1 parent 74c1276 commit 71b4959

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

core/src/main/java/fr/sncf/osrd/standalone_sim/EnvelopeStopWrapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public List<EnvelopePoint> iteratePoints() {
6464
point.speed(), point.position()
6565
);
6666
res.add(shiftedPoint);
67-
if (stopIndex < stops.size() && arePositionsEqual(point.position(), stops.get(stopIndex).position)) {
67+
if (stopIndex < stops.size() && point.position() >= stops.get(stopIndex).position) {
6868
var stopDuration = stops.get(stopIndex).duration;
6969
stopIndex++;
7070
sumPreviousStopDuration += stopDuration;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package fr.sncf.osrd.standalone_sim;
2+
3+
import fr.sncf.osrd.envelope.EnvelopeTimeInterpolate;
4+
import fr.sncf.osrd.envelope.Envelope;
5+
import fr.sncf.osrd.envelope.EnvelopeTestUtils;
6+
import fr.sncf.osrd.train.TrainStop;
7+
import org.junit.jupiter.api.Assertions;
8+
import org.junit.jupiter.api.Test;
9+
10+
import java.util.List;
11+
12+
public class EnvelopeStopWrapperTests {
13+
@Test
14+
public void iteratePointsWithoutStops() {
15+
var envelopeFloor = Envelope.make(EnvelopeTestUtils.generateTimes(new double[]{0, 1, 2, 3, 4, 5, 6}, new double[]{1, 1, 1, 1, 1, 1, 1}));
16+
var envelopeStopWrapper = new EnvelopeStopWrapper(envelopeFloor, List.of());
17+
Assertions.assertEquals(List.of(
18+
new EnvelopeTimeInterpolate.EnvelopePoint(0, 1, 0),
19+
new EnvelopeTimeInterpolate.EnvelopePoint(1, 1, 1),
20+
new EnvelopeTimeInterpolate.EnvelopePoint(2, 1, 2),
21+
new EnvelopeTimeInterpolate.EnvelopePoint(3, 1, 3),
22+
new EnvelopeTimeInterpolate.EnvelopePoint(4, 1, 4),
23+
new EnvelopeTimeInterpolate.EnvelopePoint(5, 1, 5),
24+
new EnvelopeTimeInterpolate.EnvelopePoint(6, 1, 6)
25+
), envelopeStopWrapper.iteratePoints());
26+
}
27+
28+
@Test
29+
public void iteratePointsWithStops() {
30+
var envelopeFloor = Envelope.make(EnvelopeTestUtils.generateTimes(new double[]{0, 1, 2, 3, 4, 5, 6}, new double[]{1, 1, 1, 0, 1, 1, 1}));
31+
var envelopeStopWrapper = new EnvelopeStopWrapper(envelopeFloor, List.of(new TrainStop(1.5, 0), new TrainStop(3, 10)));
32+
Assertions.assertEquals(List.of(
33+
new EnvelopeTimeInterpolate.EnvelopePoint(0, 1, 0),
34+
new EnvelopeTimeInterpolate.EnvelopePoint(1, 1, 1),
35+
new EnvelopeTimeInterpolate.EnvelopePoint(2, 1, 2),
36+
new EnvelopeTimeInterpolate.EnvelopePoint(4, 0, 3),
37+
new EnvelopeTimeInterpolate.EnvelopePoint(6+10, 1, 4),
38+
new EnvelopeTimeInterpolate.EnvelopePoint(7+10, 1, 5),
39+
new EnvelopeTimeInterpolate.EnvelopePoint(8+10, 1, 6)
40+
), envelopeStopWrapper.iteratePoints());
41+
}
42+
}

0 commit comments

Comments
 (0)