Skip to content

Commit 847f2bb

Browse files
Adhere to iterator contract
1 parent 5b64d05 commit 847f2bb

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

street/src/main/java/org/opentripplanner/street/search/state/BackEdgeIterator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.opentripplanner.street.search.state;
22

33
import java.util.Iterator;
4+
import java.util.NoSuchElementException;
45
import org.opentripplanner.street.model.edge.Edge;
56

67
/**
@@ -21,6 +22,9 @@ public boolean hasNext() {
2122

2223
@Override
2324
public Edge next() {
25+
if(!hasNext()){
26+
throw new NoSuchElementException("No more back edges available");
27+
}
2428
var ret = current;
2529
current = current.getBackState();
2630
return ret.getBackEdge();

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.opentripplanner.street.search.state;
22

33
import static com.google.common.truth.Truth.assertThat;
4+
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertThrows;
46
import static org.junit.jupiter.params.provider.Arguments.of;
57
import static org.opentripplanner.street.search.state.TestStateBuilder.ofBikeRental;
68
import static org.opentripplanner.street.search.state.TestStateBuilder.ofCycling;
@@ -9,6 +11,8 @@
911

1012
import com.google.common.collect.ImmutableList;
1113
import java.util.List;
14+
import java.util.NoSuchElementException;
15+
import org.junit.jupiter.api.Test;
1216
import org.junit.jupiter.params.ParameterizedTest;
1317
import org.junit.jupiter.params.provider.Arguments;
1418
import org.junit.jupiter.params.provider.MethodSource;
@@ -32,5 +36,18 @@ void countEdges(State state, int expectedSize) {
3236
var edges = ImmutableList.copyOf(state.listBackEdges());
3337
assertThat(edges).hasSize(expectedSize);
3438
assertThat(edges).doesNotContain(null);
39+
40+
}
41+
42+
@Test
43+
void exception(){
44+
var state = TestStateBuilder.ofWalking().streetEdge().build();
45+
var iterator = state.listBackEdges().iterator();
46+
var edges = ImmutableList.copyOf(iterator);
47+
assertThat(edges).hasSize(1);
48+
49+
assertFalse(iterator.hasNext());
50+
51+
assertThrows(NoSuchElementException.class, iterator::next);
3552
}
3653
}

0 commit comments

Comments
 (0)