lsa-planer
LSA-Planer Professional – Planungssoftware für Lichtsignalanlagen nach RiLSA 2015 und § 45 StVO. EUPL-1.2.
/ tests domain hilfetexteRaeumgeschwindigkeitFahrzeugart.test.ts
| 1 | import { describe, expect, it } from 'vitest'; |
| 2 | import { computeIntergreen } from '@/domain/rilsa/intergreen'; |
| 3 | import { RILSA_DEFAULTS, SAFETY_FLOORS } from '@/domain/rilsa/constants'; |
| 4 | import type { ClearingStream, EnteringStream } from '@/domain/rilsa/types'; |
| 5 | import { HILFE } from '@/ui/help/texte'; |
| 6 | |
| 7 | /** |
| 8 | * Zwei Hilfetexte, die mit den Behebungen der Fassung 5.9.0 nachzuziehen |
| 9 | * waren: Sie sagten etwas zu, das der Quelltext daneben nicht mehr einhielt |
| 10 | * bzw. nicht mehr vollstaendig beschrieb. |
| 11 | * |
| 12 | * (a) "Raeumgeschwindigkeit", Feld wennFalsch: Der Text sagte zu, das |
| 13 | * Programm lasse keine hoehere Raeumgeschwindigkeit als den Regelwert |
| 14 | * zu. Seit der Behebung der Befunde 28 und 29 wird ein hoeherer Wert |
| 15 | * ANGESETZT und nur als begruendungspflichtige Abweichung gemeldet; |
| 16 | * hart begrenzt wird erst an der Obergrenze der Verkehrsart. |
| 17 | * (b) "Fahrzeugart", Feld woher: Seit der Behebung von Befund 4 sind an |
| 18 | * Kfz- und OePNV-Signalgruppen nur noch Arten mit ausreichendem |
| 19 | * Laengenzuschlag waehlbar. Der Text erwaehnte die Einschraenkung |
| 20 | * nicht und las sich weiter, als stuende jede Art zur Wahl. |
| 21 | */ |
| 22 | |
| 23 | function abbiegerRaeumend(extra: Partial<ClearingStream> = {}): ClearingStream { |
| 24 | return { |
| 25 | mode: 'kfz', |
| 26 | movement: 'rechts', |
| 27 | clearingDistance: 40, |
| 28 | vehicleClass: 'pkw', |
| 29 | vZul: 50, |
| 30 | ...extra, |
| 31 | }; |
| 32 | } |
| 33 | |
| 34 | const kfzEinfahrend: EnteringStream = { |
| 35 | mode: 'kfz', |
| 36 | movement: 'geradeaus', |
| 37 | enteringDistance: 8, |
| 38 | }; |
| 39 | |
| 40 | describe('(a) Der Hilfetext zur Raeumgeschwindigkeit gibt das heutige Verhalten wieder', () => { |
| 41 | it('setzt eine Handeingabe ueber dem Regelwert an und meldet sie nur', () => { |
| 42 | // Der Regelwert des Abbiegers ist 7,0 m/s, die Obergrenze der Verkehrsart |
| 43 | // 10,0 m/s. Dazwischen wird der Wert angesetzt - nicht abgelehnt. |
| 44 | const ergebnis = computeIntergreen( |
| 45 | abbiegerRaeumend({ clearingSpeedOverride: 9 }), |
| 46 | kfzEinfahrend, |
| 47 | RILSA_DEFAULTS, |
| 48 | ); |
| 49 | expect(ergebnis.clearingSpeed).toBe(9); |
| 50 | expect(ergebnis.notes.map((n) => n.code)).toContain('raeumgeschwindigkeit-ueber-regelwert'); |
| 51 | }); |
| 52 | |
| 53 | it('begrenzt erst an der Obergrenze der Verkehrsart hart', () => { |
| 54 | const ergebnis = computeIntergreen( |
| 55 | abbiegerRaeumend({ clearingSpeedOverride: 12 }), |
| 56 | kfzEinfahrend, |
| 57 | RILSA_DEFAULTS, |
| 58 | ); |
| 59 | expect(ergebnis.clearingSpeed).toBe(SAFETY_FLOORS.maxClearingSpeedKfz); |
| 60 | expect(ergebnis.notes.map((n) => n.code)).toContain('raeumgeschwindigkeit-zu-hoch'); |
| 61 | }); |
| 62 | |
| 63 | it('sagt nicht mehr zu, hoehere Werte als den Regelwert abzuweisen', () => { |
| 64 | const text = HILFE.raeumgeschwindigkeit.wennFalsch ?? ''; |
| 65 | expect(text).not.toContain('keine höhere Räumgeschwindigkeit als den Regelwert zu'); |
| 66 | expect(text).toContain('Obergrenze'); |
| 67 | expect(text).toContain('Abweichung'); |
| 68 | // Die sichere Richtung bleibt zugesagt. |
| 69 | expect(text).toContain('niedrigere Werte'); |
| 70 | }); |
| 71 | }); |
| 72 | |
| 73 | describe('(b) Der Hilfetext zur Fahrzeugart nennt die Schranke an Kfz- und OePNV-Stroemen', () => { |
| 74 | it('nennt die Einschraenkung samt Kennzeichnung einer dennoch gesetzten Art', () => { |
| 75 | const text = HILFE.fahrzeugart.woher ?? ''; |
| 76 | expect(text).toContain('ÖPNV-Signalgruppen'); |
| 77 | expect(text).toContain('unzulässig'); |
| 78 | }); |
| 79 | |
| 80 | it('nimmt die Schranke aus constants.ts statt sie einzuschreiben', () => { |
| 81 | const text = HILFE.fahrzeugart.woher ?? ''; |
| 82 | expect(text).toContain(`mindestens ${SAFETY_FLOORS.minVehicleLengthKfz} m`); |
| 83 | }); |
| 84 | }); |