Skip to content

Commit 5426f1d

Browse files
committed
core: consider skipped stops
1 parent 347283e commit 5426f1d

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-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,50 @@
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+
import java.util.List;
10+
11+
public class EnvelopeStopWrapperTests {
12+
@Test
13+
public void iteratePointsWithoutStops() {
14+
var envelopeFloor = Envelope.make(EnvelopeTestUtils.generateTimes(
15+
new double[]{0, 1, 2, 3, 4, 5, 6},
16+
new double[]{1, 1, 1, 1, 1, 1, 1}
17+
));
18+
var envelopeStopWrapper = new EnvelopeStopWrapper(envelopeFloor, List.of());
19+
Assertions.assertEquals(List.of(
20+
new EnvelopeTimeInterpolate.EnvelopePoint(0, 1, 0),
21+
new EnvelopeTimeInterpolate.EnvelopePoint(1, 1, 1),
22+
new EnvelopeTimeInterpolate.EnvelopePoint(2, 1, 2),
23+
new EnvelopeTimeInterpolate.EnvelopePoint(3, 1, 3),
24+
new EnvelopeTimeInterpolate.EnvelopePoint(4, 1, 4),
25+
new EnvelopeTimeInterpolate.EnvelopePoint(5, 1, 5),
26+
new EnvelopeTimeInterpolate.EnvelopePoint(6, 1, 6)
27+
), envelopeStopWrapper.iteratePoints());
28+
}
29+
30+
@Test
31+
public void iteratePointsWithStops() {
32+
var envelopeFloor = Envelope.make(EnvelopeTestUtils.generateTimes(
33+
new double[]{0, 1, 2, 3, 4, 5, 6},
34+
new double[]{1, 1, 1, 0, 1, 1, 1}
35+
));
36+
var envelopeStopWrapper = new EnvelopeStopWrapper(envelopeFloor, List.of(
37+
new TrainStop(1.5, 0),
38+
new TrainStop(3, 10)
39+
));
40+
Assertions.assertEquals(List.of(
41+
new EnvelopeTimeInterpolate.EnvelopePoint(0, 1, 0),
42+
new EnvelopeTimeInterpolate.EnvelopePoint(1, 1, 1),
43+
new EnvelopeTimeInterpolate.EnvelopePoint(2, 1, 2),
44+
new EnvelopeTimeInterpolate.EnvelopePoint(4, 0, 3),
45+
new EnvelopeTimeInterpolate.EnvelopePoint(6 + 10, 1, 4),
46+
new EnvelopeTimeInterpolate.EnvelopePoint(7 + 10, 1, 5),
47+
new EnvelopeTimeInterpolate.EnvelopePoint(8 + 10, 1, 6)
48+
), envelopeStopWrapper.iteratePoints());
49+
}
50+
}

0 commit comments

Comments
 (0)