|
7 | 7 | import static org.junit.jupiter.api.Assertions.assertThrows; |
8 | 8 | import static org.junit.jupiter.api.Assertions.assertTrue; |
9 | 9 |
|
| 10 | +import com.google.common.collect.ArrayListMultimap; |
| 11 | +import com.google.common.collect.HashMultimap; |
| 12 | +import com.google.common.collect.ImmutableSortedSet; |
| 13 | +import com.google.common.collect.ListMultimap; |
| 14 | +import com.google.common.collect.Multimap; |
| 15 | +import com.google.common.collect.SetMultimap; |
10 | 16 | import java.time.LocalDate; |
11 | 17 | import java.time.ZoneId; |
12 | 18 | import java.util.Collection; |
|
24 | 30 | import org.opentripplanner._support.time.ZoneIds; |
25 | 31 | import org.opentripplanner.core.model.id.FeedScopedId; |
26 | 32 | import org.opentripplanner.model.StopTime; |
| 33 | +import org.opentripplanner.transit.model._data.TimetableRepositoryForTest; |
27 | 34 | import org.opentripplanner.transit.model.framework.Deduplicator; |
| 35 | +import org.opentripplanner.transit.model.network.Route; |
28 | 36 | import org.opentripplanner.transit.model.network.TripPattern; |
| 37 | +import org.opentripplanner.transit.model.site.RegularStop; |
| 38 | +import org.opentripplanner.transit.model.site.StopLocation; |
| 39 | +import org.opentripplanner.transit.model.site.TestStopLocation; |
29 | 40 | import org.opentripplanner.transit.service.TimetableRepository; |
30 | 41 |
|
31 | 42 | public class TimetableSnapshotTest { |
@@ -169,6 +180,59 @@ void testClear() { |
169 | 180 | assertNotNull(snapshot.getRealtimeAddedRoute(pattern.getRoute().getId())); |
170 | 181 | } |
171 | 182 |
|
| 183 | + @Test |
| 184 | + void testClearWithAllCollections() { |
| 185 | + TimetableRepositoryForTest TEST_MODEL = TimetableRepositoryForTest.of(); |
| 186 | + RegularStop STOP_A = TEST_MODEL.stop("A").build(); |
| 187 | + RegularStop STOP_B = TEST_MODEL.stop("B").build(); |
| 188 | + |
| 189 | + FeedScopedId id = new FeedScopedId(feedId, "1.2"); |
| 190 | + TripIdAndServiceDate tripIdAndServiceDate = new TripIdAndServiceDate(id, SERVICE_DATE); |
| 191 | + TripOnServiceDate tripOnServiceDate = TripOnServiceDate.of( |
| 192 | + new FeedScopedId(feedId, "triponservicedateid") |
| 193 | + ).build(); |
| 194 | + TestStopLocation testStopLocation = new TestStopLocation( |
| 195 | + new FeedScopedId(feedId, "stoplocationid") |
| 196 | + ); |
| 197 | + Route route = TimetableRepositoryForTest.route(new FeedScopedId(feedId, "routeId")).build(); |
| 198 | + Trip trip = TimetableRepositoryForTest.trip(feedId, "tripId").build(); |
| 199 | + TripPattern tripPattern = TripPattern.of(new FeedScopedId(feedId, "tripPatternId")) |
| 200 | + .withRoute(route) |
| 201 | + .withStopPattern(TimetableRepositoryForTest.stopPattern(STOP_A, STOP_B)) |
| 202 | + .withScheduledTimeTableBuilder(builder -> |
| 203 | + builder.addTripTimes( |
| 204 | + ScheduledTripTimes.of().withTrip(trip).withDepartureTimes(new int[] { 0, 1 }).build() |
| 205 | + ) |
| 206 | + ) |
| 207 | + .build(); |
| 208 | + |
| 209 | + Multimap<Route, TripPattern> realTimeAddedPatternsForRoute = ArrayListMultimap.create(); |
| 210 | + realTimeAddedPatternsForRoute.put(route, tripPattern); |
| 211 | + ListMultimap<FeedScopedId, TripOnServiceDate> realTimeAddedReplacedByTripOnServiceDateById = |
| 212 | + ArrayListMultimap.create(); |
| 213 | + realTimeAddedReplacedByTripOnServiceDateById.put(id, tripOnServiceDate); |
| 214 | + SetMultimap<StopLocation, TripPattern> patternsForStop = HashMultimap.create(); |
| 215 | + patternsForStop.put(testStopLocation, tripPattern); |
| 216 | + |
| 217 | + // The entries do not necessarily make sense, they are only for testing the clear method. |
| 218 | + TimetableSnapshot snapshot = new TimetableSnapshot( |
| 219 | + new HashMap<>(Map.of(id, ImmutableSortedSet.of())), |
| 220 | + new HashMap<>(Map.of(tripIdAndServiceDate, tripPattern)), |
| 221 | + new HashMap<>(Map.of(id, route)), |
| 222 | + new HashMap<>(Map.of(id, trip)), |
| 223 | + new HashMap<>(Map.of(trip, tripPattern)), |
| 224 | + realTimeAddedPatternsForRoute, |
| 225 | + new HashMap<>(Map.of(id, tripOnServiceDate)), |
| 226 | + realTimeAddedReplacedByTripOnServiceDateById, |
| 227 | + new HashMap<>(Map.of(tripIdAndServiceDate, tripOnServiceDate)), |
| 228 | + patternsForStop, |
| 229 | + false |
| 230 | + ); |
| 231 | + assertFalse(snapshot.isEmpty()); |
| 232 | + snapshot.clear(id.getFeedId()); |
| 233 | + assertTrue(snapshot.isEmpty()); |
| 234 | + } |
| 235 | + |
172 | 236 | private static RealTimeTripUpdate createRealTimeTripUpdate(TripPattern pattern, Trip trip) { |
173 | 237 | TripTimes updatedTriptimes = TripTimesFactory.tripTimes( |
174 | 238 | trip, |
|
0 commit comments