raptor-journey-planner
Version:
Implementation of the Round bAsed Public Transit Optimized Router (Raptor) journey planning algorithm.
84 lines (83 loc) • 3.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const util_1 = require("../util");
const chai = require("chai");
const JourneyFactory_1 = require("../../../src/results/JourneyFactory");
const RaptorAlgorithmFactory_1 = require("../../../src/raptor/RaptorAlgorithmFactory");
const RangeQuery_1 = require("../../../src/query/RangeQuery");
describe("RangeQuery", () => {
const journeyFactory = new JourneyFactory_1.JourneyFactory();
it("performs profile queries", () => {
const trips = [
(0, util_1.t)((0, util_1.st)("A", null, 1000), (0, util_1.st)("B", 1030, 1035), (0, util_1.st)("C", 1100, null)),
(0, util_1.t)((0, util_1.st)("A", null, 1100), (0, util_1.st)("B", 1130, 1135), (0, util_1.st)("C", 1200, null)),
(0, util_1.t)((0, util_1.st)("A", null, 1200), (0, util_1.st)("B", 1230, 1235), (0, util_1.st)("C", 1300, null))
];
const raptor = RaptorAlgorithmFactory_1.RaptorAlgorithmFactory.create(trips, {}, {});
const query = new RangeQuery_1.RangeQuery(raptor, journeyFactory);
const result = query.plan("A", "C", new Date("2018-10-16"));
(0, util_1.setDefaultTrip)(result);
chai.expect(result).to.deep.equal([
(0, util_1.j)([
(0, util_1.st)("A", null, 1000),
(0, util_1.st)("B", 1030, 1035),
(0, util_1.st)("C", 1100, null)
]),
(0, util_1.j)([
(0, util_1.st)("A", null, 1100),
(0, util_1.st)("B", 1130, 1135),
(0, util_1.st)("C", 1200, null)
]),
(0, util_1.j)([
(0, util_1.st)("A", null, 1200),
(0, util_1.st)("B", 1230, 1235),
(0, util_1.st)("C", 1300, null)
])
]);
});
/**
* Unfortunately it is not possible to share the bestArrivals index or the state of the route scanner between
* departure times in a range query.
*
* Consider a journey:
*
* A -> B -> C, departing at 1400, arriving at 1500
*
* There may be an earlier journey with no changes
*
* A -> C, departing at 1359 that arrives at 1501
*
* That is rejected because it does not improve the earliest arrival time at C
*/
it("does not share bestArrivals or routeScanner", () => {
const trips = [
(0, util_1.t)((0, util_1.st)("A", null, 1359), (0, util_1.st)("C", 1501, null)),
(0, util_1.t)((0, util_1.st)("A", null, 1400), (0, util_1.st)("B", 1430, null)),
(0, util_1.t)((0, util_1.st)("B", null, 1430), (0, util_1.st)("C", 1500, null))
];
const raptor = RaptorAlgorithmFactory_1.RaptorAlgorithmFactory.create(trips, {}, {});
const query = new RangeQuery_1.RangeQuery(raptor, journeyFactory);
const result = query.plan("A", "C", new Date("2018-10-16"));
(0, util_1.setDefaultTrip)(result);
chai.expect(result).to.deep.equal([
(0, util_1.j)([
(0, util_1.st)("A", null, 1359),
(0, util_1.st)("C", 1501, null)
]),
(0, util_1.j)([
(0, util_1.st)("A", null, 1400),
(0, util_1.st)("B", 1430, null)
], [
(0, util_1.st)("B", null, 1430),
(0, util_1.st)("C", 1500, null)
]),
(0, util_1.j)([
(0, util_1.st)("A", null, 1400),
(0, util_1.st)("B", 1430, null)
], [
(0, util_1.st)("B", null, 1430),
(0, util_1.st)("C", 1500, null)
]),
]);
});
});