Skip to content

Commit 6cd22f6

Browse files
committed
test: StateEditorTest and Test for changes to an edges state
1 parent d980fa2 commit 6cd22f6

File tree

2 files changed

+131
-0
lines changed

2 files changed

+131
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package org.opentripplanner.street.model.edge;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.opentripplanner.street.model._data.StreetModelForTest.intersectionVertex;
5+
import static org.opentripplanner.street.model._data.StreetModelForTest.streetEdge;
6+
import static org.opentripplanner.street.model.edge.StreetEdgeGeofencingTest.NETWORK_TIER;
7+
8+
import javax.annotation.Nonnull;
9+
import org.junit.jupiter.api.Test;
10+
import org.opentripplanner.routing.api.request.StreetMode;
11+
import org.opentripplanner.street.model.RentalFormFactor;
12+
import org.opentripplanner.street.model.vertex.StreetVertex;
13+
import org.opentripplanner.street.model.vertex.Vertex;
14+
import org.opentripplanner.street.search.request.StreetSearchRequest;
15+
import org.opentripplanner.street.search.state.State;
16+
import org.opentripplanner.street.search.state.StateEditor;
17+
18+
public class EdgeStateTest {
19+
StreetVertex V1 = intersectionVertex("V1", 0, 0);
20+
StreetVertex V2 = intersectionVertex("V2", 1, 1);
21+
22+
@Test
23+
public void testReverseBatteryMetersWithoutBackState() {
24+
var edge1 = streetEdge(V1, V2);
25+
var results = reverseFromV1WithoutBackState(edge1);
26+
27+
assertEquals(results.traversedBatteryMeters, 0);
28+
assertEquals(results.currentRangeMeters, Double.POSITIVE_INFINITY);
29+
}
30+
31+
@Test
32+
public void testReverseBatteryMetersWithoutBatteryDistance() {
33+
var edge1 = streetEdge(V1, V2);
34+
var results = reverseFromV1WithoutBatteryDistance(edge1);
35+
36+
assertEquals(results.traversedBatteryMeters, 0);
37+
assertEquals(results.currentRangeMeters, Double.POSITIVE_INFINITY);
38+
}
39+
40+
@Test
41+
public void testReverseBatteryMetersWithBatteryDistance() {
42+
var edge1 = streetEdge(V1, V2);
43+
var results = reverseFromV1WithBatteryDistance(edge1);
44+
45+
assertEquals(results.traversedBatteryMeters, 350);
46+
assertEquals(results.currentRangeMeters, 1000);
47+
}
48+
49+
private State reverseFromV1WithoutBackState(StreetEdge edge) {
50+
var state = initialStateWithoutBackState(V1, NETWORK_TIER, false);
51+
return state.reverse();
52+
}
53+
54+
private State reverseFromV1WithoutBatteryDistance(StreetEdge edge) {
55+
var state = initialStateWithoutBatteryDistance(V1, NETWORK_TIER, false);
56+
return state.reverse();
57+
}
58+
59+
private State reverseFromV1WithBatteryDistance(StreetEdge edge) {
60+
var state = initialStateWithBatteryDistance(V1, NETWORK_TIER, false);
61+
state.currentRangeMeters = 2000;
62+
state.traversedBatteryMeters = 600;
63+
return state.reverse();
64+
}
65+
66+
67+
68+
69+
@Nonnull
70+
private State initialStateWithoutBackState(Vertex startVertex, String network, boolean arriveBy) {
71+
var req = StreetSearchRequest
72+
.of()
73+
.withMode(StreetMode.SCOOTER_RENTAL)
74+
.withArriveBy(arriveBy)
75+
.build();
76+
var editor = new StateEditor(startVertex, req);
77+
editor.beginFloatingVehicleRenting(RentalFormFactor.SCOOTER, network, false);
78+
return editor.makeState();
79+
}
80+
81+
@Nonnull
82+
private State initialStateWithoutBatteryDistance(Vertex startVertex, String network, boolean arriveBy) {
83+
State state = initialStateWithoutBackState(startVertex, network, arriveBy);
84+
var edge1 = streetEdge(V1, V2);
85+
86+
StateEditor editor = new StateEditor(state, edge1);
87+
editor.beginFloatingVehicleRenting(RentalFormFactor.SCOOTER, network, false);
88+
return editor.makeState();
89+
90+
}
91+
92+
@Nonnull
93+
private State initialStateWithBatteryDistance(Vertex startVertex, String network, boolean arriveBy) {
94+
State state = initialStateWithoutBackState(startVertex, network, arriveBy);
95+
var edge1 = streetEdge(V1, V2);
96+
state.currentRangeMeters = 1000;
97+
state.traversedBatteryMeters =250;
98+
99+
StateEditor editor = new StateEditor(state, edge1);
100+
editor.beginFloatingVehicleRenting(RentalFormFactor.SCOOTER, network, false);
101+
return editor.makeState();
102+
}
103+
}

src/test/java/org/opentripplanner/street/search/state/StateEditorTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,34 @@ public final void testInfinityWeightIncrement() {
5959
assertNull(stateEditor.makeState(), "Infinity weight increment");
6060
}
6161

62+
@Test
63+
public final void testTraversedBatteryMetersIncrement() {
64+
StateEditor stateEditor = new StateEditor(vertex, StreetSearchRequest.of().build());
65+
66+
stateEditor.child.traversedBatteryMeters = 0;
67+
stateEditor.incrementTraversedBatteryMeters(1);
68+
assertEquals(1, stateEditor.child.traversedBatteryMeters);
69+
}
70+
71+
@Test
72+
public final void testDefectiveTraversedBatteryMetersIncrement() {
73+
StateEditor stateEditor = new StateEditor(vertex, StreetSearchRequest.of().build());
74+
75+
stateEditor.child.traversedBatteryMeters = 1;
76+
stateEditor.incrementTraversedBatteryMeters(-1);
77+
assertEquals(1, stateEditor.child.traversedBatteryMeters);
78+
}
79+
80+
@Test
81+
public final void testSetCurrentRangeMeters() {
82+
StateEditor stateEditor = new StateEditor(vertex, StreetSearchRequest.of().build());
83+
84+
stateEditor.child.currentRangeMeters = 0;
85+
stateEditor.setCurrentRangeMeters(1);
86+
assertEquals(1, stateEditor.child.currentRangeMeters);
87+
}
88+
89+
6290
@Nested
6391
class GeofencingZones {
6492

0 commit comments

Comments
 (0)