Skip to content

Commit dfc9e4c

Browse files
committed
core: fix mrsp construction
1 parent f062f1f commit dfc9e4c

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

core/src/main/java/fr/sncf/osrd/infra/api/tracks/undirected/SpeedLimits.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import com.google.common.collect.ImmutableMap;
44
import com.google.common.collect.Sets;
55
import fr.sncf.osrd.railjson.schema.infra.trackranges.RJSSpeedSection;
6-
import fr.sncf.osrd.sim_infra.impl.SpeedSection;
7-
import fr.sncf.osrd.utils.units.Speed;
8-
import java.util.HashMap;
6+
import java.util.Objects;
97

108
public final class SpeedLimits {
119

@@ -51,12 +49,26 @@ public static SpeedLimits merge(SpeedLimits a, SpeedLimits b) {
5149
var categories = Sets.union(a.speedLimitByTag.keySet(), b.speedLimitByTag.keySet());
5250
var builder = ImmutableMap.<String, Double>builder();
5351
for (var category : categories) {
54-
Double speedA = a.speedLimitByTag.getOrDefault(category, Double.POSITIVE_INFINITY);
55-
Double speedB = b.speedLimitByTag.getOrDefault(category, Double.POSITIVE_INFINITY);
52+
Double speedA = a.speedLimitByTag.getOrDefault(category, a.defaultSpeedLimit);
53+
Double speedB = b.speedLimitByTag.getOrDefault(category, b.defaultSpeedLimit);
5654
assert speedA != null && speedB != null;
5755
var speed = Double.min(speedA, speedB);
5856
builder.put(category, speed);
5957
}
6058
return new SpeedLimits(defaultSpeed, builder.build());
6159
}
60+
61+
@Override
62+
public boolean equals(Object o) {
63+
if (this == o) return true;
64+
if (o == null || getClass() != o.getClass()) return false;
65+
SpeedLimits other = (SpeedLimits) o;
66+
return Double.compare(defaultSpeedLimit, other.defaultSpeedLimit) == 0
67+
&& Objects.equals(speedLimitByTag, other.speedLimitByTag);
68+
}
69+
70+
@Override
71+
public int hashCode() {
72+
return Objects.hash(defaultSpeedLimit, speedLimitByTag);
73+
}
6274
}

core/src/test/java/fr/sncf/osrd/infra/tracks/undirected/RJSParsingTests.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void testOverlappingSpeedSections() throws Exception {
6767
var rjsInfra = Helpers.getExampleInfra("one_line/infra.json");
6868
var track = rjsInfra.trackSections.iterator().next();
6969
rjsInfra.speedSections = List.of(
70-
new RJSSpeedSection("id", 42, Map.of(
70+
new RJSSpeedSection("id", 27, Map.of(
7171
"category1", 10.,
7272
"category2", 20.
7373
), List.of(new RJSApplicableDirectionsTrackRange(
@@ -78,7 +78,7 @@ public void testOverlappingSpeedSections() throws Exception {
7878
))),
7979
new RJSSpeedSection("id", 45, Map.of(
8080
"category2", 12.,
81-
"category3", 17.
81+
"category3", 30.
8282
), List.of(new RJSApplicableDirectionsTrackRange(
8383
track.id,
8484
ApplicableDirection.START_TO_STOP,
@@ -88,21 +88,22 @@ public void testOverlappingSpeedSections() throws Exception {
8888
);
8989
var parsedInfra = UndirectedInfraBuilder.parseInfra(rjsInfra, new DiagnosticRecorderImpl(true));
9090
var expected = TreeRangeMap.<Double, SpeedLimits>create();
91-
expected.put(Range.closed(0., 5.), new SpeedLimits(42, ImmutableMap.of(
91+
expected.put(Range.closed(0., 5.), new SpeedLimits(27, ImmutableMap.of(
9292
"category1", 10.,
9393
"category2", 20.
9494
)));
95-
expected.put(Range.closed(5., 10.), new SpeedLimits(42, ImmutableMap.of(
95+
expected.put(Range.closed(5., 10.), new SpeedLimits(27, ImmutableMap.of(
9696
"category1", 10.,
9797
"category2", 12.,
98-
"category3", 17.
98+
"category3", 27.
9999
)));
100100
expected.put(Range.closed(10., 15.), new SpeedLimits(45, ImmutableMap.of(
101101
"category2", 12.,
102-
"category3", 17.
102+
"category3", 30.
103103
)));
104+
expected.put(Range.closed(15., 1000.), new SpeedLimits(Double.POSITIVE_INFINITY, ImmutableMap.of()));
104105
var speedLimits = parsedInfra.getTrackSection(track.id).getSpeedSections().get(Direction.FORWARD);
105-
equalsIgnoringTransitions(expected, speedLimits);
106+
assertTrue(equalsIgnoringTransitions(expected, speedLimits));
106107
}
107108

108109
@Test

0 commit comments

Comments
 (0)