Import initial : code en production sur Hetzner
This commit is contained in:
commit
cf6ee64e31
43 changed files with 14404 additions and 0 deletions
43
test/unit/polyline.spec.ts
Normal file
43
test/unit/polyline.spec.ts
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
import { describe, expect, it } from 'vitest'
|
||||
import { decodePolyline, thin } from '#shared/polyline'
|
||||
|
||||
describe('decodePolyline', () => {
|
||||
it('decode l exemple de reference de Google a la precision 5', () => {
|
||||
// Exemple officiel : trois points en Californie.
|
||||
const r = decodePolyline('_p~iF~ps|U_ulLnnqC_mqNvxq`@', 5)
|
||||
expect(r).toHaveLength(3)
|
||||
// Ordre GeoJSON : longitude d'abord.
|
||||
expect(r[0]![1]).toBeCloseTo(38.5, 4)
|
||||
expect(r[0]![0]).toBeCloseTo(-120.2, 4)
|
||||
})
|
||||
|
||||
it('place le trace ailleurs si la precision est fausse', () => {
|
||||
// C'est tout l'enjeu : MOTIS encode a 1e7, Google a 1e5.
|
||||
const juste = decodePolyline('_p~iF~ps|U', 5)
|
||||
const faux = decodePolyline('_p~iF~ps|U', 7)
|
||||
expect(faux[0]![1]).not.toBeCloseTo(juste[0]![1], 2)
|
||||
expect(faux[0]![1]).toBeCloseTo(juste[0]![1] / 100, 4)
|
||||
})
|
||||
|
||||
it('renvoie un tableau vide sur une chaine vide', () => {
|
||||
expect(decodePolyline('', 7)).toEqual([])
|
||||
})
|
||||
})
|
||||
|
||||
describe('thin', () => {
|
||||
const trace = Array.from({ length: 1000 }, (_, i) => [i, i] as [number, number])
|
||||
|
||||
it('ne touche pas a un trace deja assez court', () => {
|
||||
const court = trace.slice(0, 50)
|
||||
expect(thin(court, 800)).toBe(court)
|
||||
})
|
||||
|
||||
it('ramene un trace long sous la limite demandee', () => {
|
||||
expect(thin(trace, 100).length).toBeLessThanOrEqual(101)
|
||||
})
|
||||
|
||||
it('conserve toujours le terminus', () => {
|
||||
const r = thin(trace, 100)
|
||||
expect(r[r.length - 1]).toEqual(trace[trace.length - 1])
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue