lsa-planer
LSA-Planer Professional – Planungssoftware für Lichtsignalanlagen nach RiLSA 2015 und § 45 StVO. EUPL-1.2.
/ tests domain signalTimes.test.ts
| 1 | import { describe, expect, it } from 'vitest'; |
| 2 | import { |
| 3 | minGreenTime, |
| 4 | redYellowTime, |
| 5 | signalGroupTimes, |
| 6 | yellowTime, |
| 7 | } from '@/domain/rilsa/signalTimes'; |
| 8 | |
| 9 | describe('Signalzeiten', () => { |
| 10 | it('staffelt die Gelbzeit nach der zulaessigen Hoechstgeschwindigkeit', () => { |
| 11 | expect(yellowTime('kfz', 30)).toBe(3); |
| 12 | expect(yellowTime('kfz', 50)).toBe(3); |
| 13 | expect(yellowTime('kfz', 51)).toBe(4); |
| 14 | expect(yellowTime('kfz', 60)).toBe(4); |
| 15 | expect(yellowTime('kfz', 61)).toBe(5); |
| 16 | expect(yellowTime('kfz', 70)).toBe(5); |
| 17 | }); |
| 18 | |
| 19 | it('gibt Fussgaengern keine Gelbzeit', () => { |
| 20 | // Der Altbestand lieferte hier 3 s, weil der Fussgaenger-Fall in den |
| 21 | // Sammelzweig des Radverkehrs fiel. |
| 22 | expect(yellowTime('fuss', 50)).toBe(0); |
| 23 | expect(redYellowTime('fuss')).toBe(0); |
| 24 | }); |
| 25 | |
| 26 | it('setzt die Rot-Gelb-Zeit auf 1 s', () => { |
| 27 | // Der Altbestand verwendete 2 s. |
| 28 | expect(redYellowTime('kfz')).toBe(1); |
| 29 | expect(redYellowTime('rad')).toBe(1); |
| 30 | }); |
| 31 | |
| 32 | it('setzt bei fehlender Geschwindigkeitsangabe die laengste Gelbzeit an', () => { |
| 33 | expect(yellowTime('kfz', Number.NaN)).toBe(5); |
| 34 | expect(yellowTime('kfz', 0)).toBe(5); |
| 35 | }); |
| 36 | |
| 37 | it('liefert die Mindestfreigabezeiten je Verkehrsart', () => { |
| 38 | expect(minGreenTime('kfz')).toBe(5); |
| 39 | expect(minGreenTime('rad')).toBe(5); |
| 40 | expect(minGreenTime('fuss')).toBe(5); |
| 41 | }); |
| 42 | |
| 43 | it('fasst alle Signalzeiten zusammen', () => { |
| 44 | expect(signalGroupTimes('kfz', 50)).toEqual({ minGreen: 5, yellow: 3, redYellow: 1 }); |
| 45 | expect(signalGroupTimes('fuss', 50)).toEqual({ minGreen: 5, yellow: 0, redYellow: 0 }); |
| 46 | }); |
| 47 | }); |