lsa-planer
LSA-Planer Professional – Planungssoftware für Lichtsignalanlagen nach RiLSA 2015 und § 45 StVO. EUPL-1.2.
/ tests ui zufahrtFahrstreifenzahl.test.ts
| 1 | import { describe, expect, it } from 'vitest'; |
| 2 | import { readFileSync } from 'node:fs'; |
| 3 | |
| 4 | /* |
| 5 | * Die Fahrstreifenzahl der ZUFAHRT nimmt keine gebrochene Zahl mehr an. |
| 6 | * |
| 7 | * Drei Wege hat die Fassung 5.10.0 geschlossen, auf denen eine |
| 8 | * Fahrstreifenzahl wie 2,5 ins Projekt kam: das Einlesen (`ganzzahlAbrunden` |
| 9 | * in model/schema.ts) und die Spalte "Fahrstreifen" der Signalgruppentabelle |
| 10 | * (dieselbe Option an `numberCell`). Der vierte blieb offen und wurde vom |
| 11 | * Bearbeiter gemeldet: dasselbe Feld an der Zufahrt in der Ansicht "Projekt". |
| 12 | * |
| 13 | * Eine Anzahl ist keine Messgroesse. Ueber die Zufahrt geht sie in |
| 14 | * `saturationFlow` ein - eine halbe Fahrstreifenbreite gibt es dort nicht, und |
| 15 | * der Wert stand bis zum naechsten Oeffnen in Rechnung, Tabelle und Ausdruck. |
| 16 | * |
| 17 | * Geprueft wird am Quelltext und nicht am gebauten Feld: Der Aufruf liegt tief |
| 18 | * in einer Tabellenzeile der Zufahrtsliste, und die Wache soll sagen, WELCHE |
| 19 | * Stelle die Option traegt - genau die war vergessen worden. Das Verhalten der |
| 20 | * Option selbst bewacht tests/ui/fahrstreifenzahl.test.ts. |
| 21 | */ |
| 22 | |
| 23 | const PROJEKTANSICHT = readFileSync('src/ui/views/projectView.ts', 'utf8'); |
| 24 | |
| 25 | describe('Fahrstreifenzahl der Zufahrt', () => { |
| 26 | it('traegt dieselbe Ganzzahlgrenze wie das Feld der Signalgruppentabelle', () => { |
| 27 | // Der Ausschnitt um den Aufruf: von der uebergebenen Fahrstreifenzahl bis |
| 28 | // zum Ende seiner Optionen. |
| 29 | const start = PROJEKTANSICHT.indexOf('arm.lanes,'); |
| 30 | expect(start, 'Aufruf mit arm.lanes nicht gefunden').toBeGreaterThan(-1); |
| 31 | const ausschnitt = PROJEKTANSICHT.slice(start, start + 1200); |
| 32 | |
| 33 | expect(ausschnitt, 'Das Feld begrenzt weiterhin nur min, max und step').toContain( |
| 34 | 'ganzzahlAbrunden: true', |
| 35 | ); |
| 36 | }); |
| 37 | |
| 38 | it('nennt daneben den Grund - eine Anzahl ist keine Messgroesse', () => { |
| 39 | // Ohne Begruendung faellt die Option beim naechsten Umbau als |
| 40 | // ueberfluessig wieder heraus; im Feld der Signalgruppentabelle steht sie |
| 41 | // aus demselben Grund. |
| 42 | const start = PROJEKTANSICHT.indexOf('arm.lanes,'); |
| 43 | const ausschnitt = PROJEKTANSICHT.slice(start, start + 1200); |
| 44 | expect(ausschnitt.toLowerCase()).toContain('anzahl'); |
| 45 | }); |
| 46 | }); |