INSA: enable radar

This commit is contained in:
Jannis R 2018-03-13 21:06:27 +01:00
parent ba97275bae
commit c123d9e451
No known key found for this signature in database
GPG key ID: 0FE83946296A88A5
5 changed files with 58 additions and 3 deletions

View file

@ -16,6 +16,7 @@ client.journeys('008010226', '008013456', {results: 1})
// latitude: 52.148842,
// longitude: 11.641705
// }, {distance: 200})
// client.radar(52.148364, 11.600826, 52.108486, 11.651451, {results: 10})
// .then(([journey]) => {
// const leg = journey.legs[0]

View file

@ -76,7 +76,7 @@ const insaProfile = {
parseLine: createParseLine,
journeyLeg: true
// todo: radar?
radar: true
}
module.exports = insaProfile;

View file

@ -65,7 +65,8 @@ p.bitmasks[2] = p.national
p.bitmasks[8] = p.regional
p.bitmasks[16] = p.suburban
p.bitmasks[32] = p.tram
p.bitmasks[64+128] = p.bus
p.bitmasks[64] = p.bus
p.bitmasks[128] = p.bus
p.bitmasks[256] = p.tourismTrain
p.allProducts = [

View file

@ -20,7 +20,7 @@ const parseLocation = (profile, l, lines) => {
type: 'station',
id: l.extId,
name: l.name,
location: res
location: 'number' === typeof res.latitude ? res : null
}
if ('pCls' in l) station.products = profile.parseProducts(l.pCls)

View file

@ -310,3 +310,56 @@ test('location', co(function*(t) {
t.end()
}))
test('radar', co(function* (t) {
const north = 52.148364
const west = 11.600826
const south = 52.108486
const east = 11.651451
const vehicles = yield client.radar(north, west, south, east, {
duration: 5 * 60, when, results: 10
})
t.ok(Array.isArray(vehicles))
t.ok(vehicles.length > 0)
for (let v of vehicles) {
assertValidLine(t, v.line)
t.equal(typeof v.location.latitude, 'number')
t.ok(v.location.latitude <= 57, 'vehicle is too far away')
t.ok(v.location.latitude >= 47, 'vehicle is too far away')
t.equal(typeof v.location.longitude, 'number')
t.ok(v.location.longitude >= 8, 'vehicle is too far away')
t.ok(v.location.longitude <= 14, 'vehicle is too far away')
t.ok(Array.isArray(v.nextStops))
for (let st of v.nextStops) {
assertValidStopover(t, st, true)
if (st.arrival) {
t.equal(typeof st.arrival, 'string')
const arr = +new Date(st.arrival)
// note that this can be an ICE train
t.ok(isRoughlyEqual(14 * hour, +when, arr))
}
if (st.departure) {
t.equal(typeof st.departure, 'string')
const dep = +new Date(st.departure)
// note that this can be an ICE train
t.ok(isRoughlyEqual(14 * hour, +when, dep))
}
}
t.ok(Array.isArray(v.frames))
for (let f of v.frames) {
// see #28
// todo: check if this works by now
assertValidStation(t, f.origin, true)
assertValidStationProducts(t, f.origin.products)
assertValidStation(t, f.destination, true)
assertValidStationProducts(t, f.destination.products)
t.equal(typeof f.t, 'number')
}
}
t.end()
}))