assertEquals(tripA1, trips.get(0));
assertEquals(tripB1, trips.get(1));
assertEquals(tripF1, trips.get(2));
assertEquals(tripE1, trips.get(3));
assertEquals(tripB3, trips.get(4));
ServiceIdActivation serviceIds = index.getServiceIds();
assertEquals(1, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
ServiceIntervalBlock intervalBlock = index.getServiceIntervalBlock();
assertTrue(Arrays.equals(new int[] {0, 20, 40, 50, 80},
intervalBlock.getMinArrivals()));
assertTrue(Arrays.equals(new int[] {10, 30, 50, 60, 80},
intervalBlock.getMinDepartures()));
assertTrue(Arrays.equals(new int[] {20, 50, 70, 80, 90},
intervalBlock.getMaxArrivals()));
assertTrue(Arrays.equals(new int[] {20, 50, 70, 80, 100},
intervalBlock.getMaxDepartures()));
indices = grep(allIndices, aid("a2"));
assertEquals(1, indices.size());
index = indices.get(0);
trips = trips(index.getTrips());
assertEquals(5, trips.size());
assertEquals(tripA2, trips.get(0));
assertEquals(tripB2, trips.get(1));
assertEquals(tripC2, trips.get(2));
assertEquals(tripF2, trips.get(3));
assertEquals(tripE2, trips.get(4));
serviceIds = index.getServiceIds();
assertEquals(1, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
intervalBlock = index.getServiceIntervalBlock();
assertTrue(Arrays.equals(new int[] {30, 60, 70, 80, 90},
intervalBlock.getMinArrivals()));
assertTrue(Arrays.equals(new int[] {30, 60, 70, 80, 90},
intervalBlock.getMinDepartures()));
assertTrue(Arrays.equals(new int[] {40, 70, 80, 90, 100},
intervalBlock.getMaxArrivals()));
assertTrue(Arrays.equals(new int[] {40, 70, 80, 90, 100},
intervalBlock.getMaxDepartures()));
indices = grep(allIndices, aid("c1"));
assertEquals(1, indices.size());
index = indices.get(0);
trips = trips(index.getTrips());
assertEquals(3, trips.size());
assertEquals(tripC1, trips.get(0));
assertEquals(tripA3, trips.get(1));
assertEquals(tripC3, trips.get(2));
serviceIds = index.getServiceIds();
assertEquals(1, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
intervalBlock = index.getServiceIntervalBlock();
assertTrue(Arrays.equals(new int[] {40, 50, 85},
intervalBlock.getMinArrivals()));
assertTrue(Arrays.equals(new int[] {50, 50, 85},
intervalBlock.getMinDepartures()));
assertTrue(Arrays.equals(new int[] {60, 60, 90},
intervalBlock.getMaxArrivals()));
assertTrue(Arrays.equals(new int[] {60, 70, 95},
intervalBlock.getMaxDepartures()));
indices = grep(allIndices, aid("d1"));
assertEquals(1, indices.size());
index = indices.get(0);
trips = trips(index.getTrips());
assertEquals(2, trips.size());
assertEquals(tripD1, trips.get(0));
assertEquals(tripD3, trips.get(1));
serviceIds = index.getServiceIds();
assertEquals(2, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s2")));
intervalBlock = index.getServiceIntervalBlock();
assertTrue(Arrays.equals(new int[] {40, 100},
intervalBlock.getMinArrivals()));
assertTrue(Arrays.equals(new int[] {50, 100},
intervalBlock.getMinDepartures()));
assertTrue(Arrays.equals(new int[] {70, 110},
intervalBlock.getMaxArrivals()));
assertTrue(Arrays.equals(new int[] {70, 120},
intervalBlock.getMaxDepartures()));
indices = grep(allIndices, aid("d2"));
assertEquals(1, indices.size());
index = indices.get(0);
trips = trips(index.getTrips());
assertEquals(1, trips.size());
assertEquals(tripD2, trips.get(0));
serviceIds = index.getServiceIds();
assertEquals(2, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s2")));
intervalBlock = index.getServiceIntervalBlock();
assertTrue(Arrays.equals(new int[] {80}, intervalBlock.getMinArrivals()));
assertTrue(Arrays.equals(new int[] {80}, intervalBlock.getMinDepartures()));
assertTrue(Arrays.equals(new int[] {90}, intervalBlock.getMaxArrivals()));
assertTrue(Arrays.equals(new int[] {90}, intervalBlock.getMaxDepartures()));
indices = grep(allIndices, aid("e3"));
assertEquals(1, indices.size());
index = indices.get(0);
trips = trips(index.getTrips());
assertEquals(2, trips.size());
assertEquals(tripF3, trips.get(0));
assertEquals(tripE3, trips.get(1));
serviceIds = index.getServiceIds();
assertEquals(1, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
intervalBlock = index.getServiceIntervalBlock();
assertTrue(Arrays.equals(new int[] {100, 110},
intervalBlock.getMinArrivals()));
assertTrue(Arrays.equals(new int[] {100, 110},
intervalBlock.getMinDepartures()));
assertTrue(Arrays.equals(new int[] {100, 110},
intervalBlock.getMaxArrivals()));
assertTrue(Arrays.equals(new int[] {100, 110},
intervalBlock.getMaxDepartures()));
/****
* Test Layover Indices
****/
List<BlockLayoverIndex> allLayoverIndices = factory.createLayoverIndices(Arrays.asList(
(BlockEntry) blockF, blockE, blockD, blockC, blockB, blockA));
List<BlockLayoverIndex> layoverIndices = grep(allLayoverIndices, aid("a2"));
assertEquals(1, layoverIndices.size());
BlockLayoverIndex layoverIndiex = layoverIndices.get(0);
trips = trips(layoverIndiex.getTrips());
assertEquals(5, trips.size());
assertEquals(tripA2, trips.get(0));
assertEquals(tripB2, trips.get(1));
assertEquals(tripC2, trips.get(2));
assertEquals(tripF2, trips.get(3));
assertEquals(tripE2, trips.get(4));
serviceIds = layoverIndiex.getServiceIds();
assertEquals(1, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
LayoverIntervalBlock layoverIntervalBlock = layoverIndiex.getLayoverIntervalBlock();
assertTrue(Arrays.equals(new int[] {20, 50, 60, 70, 80},
layoverIntervalBlock.getStartTimes()));
assertTrue(Arrays.equals(new int[] {30, 60, 70, 80, 90},
layoverIntervalBlock.getEndTimes()));
layoverIndices = grep(allLayoverIndices, aid("a3"));
assertEquals(1, layoverIndices.size());
layoverIndiex = layoverIndices.get(0);
trips = trips(layoverIndiex.getTrips());
assertEquals(5, trips.size());
assertEquals(tripA3, trips.get(0));
assertEquals(tripB3, trips.get(1));
assertEquals(tripC3, trips.get(2));
assertEquals(tripF3, trips.get(3));
assertEquals(tripE3, trips.get(4));
serviceIds = layoverIndiex.getServiceIds();
assertEquals(1, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
layoverIntervalBlock = layoverIndiex.getLayoverIntervalBlock();
assertTrue(Arrays.equals(new int[] {40, 70, 80, 90, 100},
layoverIntervalBlock.getStartTimes()));
assertTrue(Arrays.equals(new int[] {50, 80, 85, 100, 110},
layoverIntervalBlock.getEndTimes()));
layoverIndices = grep(allLayoverIndices, aid("d2"));
assertEquals(1, layoverIndices.size());
layoverIndiex = layoverIndices.get(0);
trips = trips(layoverIndiex.getTrips());
assertEquals(1, trips.size());
assertEquals(tripD2, trips.get(0));
serviceIds = layoverIndiex.getServiceIds();
assertEquals(2, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s2")));
layoverIntervalBlock = layoverIndiex.getLayoverIntervalBlock();
assertTrue(Arrays.equals(new int[] {70},
layoverIntervalBlock.getStartTimes()));
assertTrue(Arrays.equals(new int[] {80}, layoverIntervalBlock.getEndTimes()));
layoverIndices = grep(allLayoverIndices, aid("d3"));
assertEquals(1, layoverIndices.size());
layoverIndiex = layoverIndices.get(0);
trips = trips(layoverIndiex.getTrips());
assertEquals(1, trips.size());
assertEquals(tripD3, trips.get(0));
serviceIds = layoverIndiex.getServiceIds();
assertEquals(2, serviceIds.getActiveServiceIds().size());
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s1")));
assertTrue(serviceIds.getActiveServiceIds().contains(lsid("s2")));
layoverIntervalBlock = layoverIndiex.getLayoverIntervalBlock();
assertTrue(Arrays.equals(new int[] {90},
layoverIntervalBlock.getStartTimes()));
assertTrue(Arrays.equals(new int[] {100},
layoverIntervalBlock.getEndTimes()));