import { describe, expect, it } from 'vitest'; import { readFileSync } from 'node:fs'; /* * Die Fahrstreifenzahl der ZUFAHRT nimmt keine gebrochene Zahl mehr an. * * Drei Wege hat die Fassung 5.10.0 geschlossen, auf denen eine * Fahrstreifenzahl wie 2,5 ins Projekt kam: das Einlesen (`ganzzahlAbrunden` * in model/schema.ts) und die Spalte "Fahrstreifen" der Signalgruppentabelle * (dieselbe Option an `numberCell`). Der vierte blieb offen und wurde vom * Bearbeiter gemeldet: dasselbe Feld an der Zufahrt in der Ansicht "Projekt". * * Eine Anzahl ist keine Messgroesse. Ueber die Zufahrt geht sie in * `saturationFlow` ein - eine halbe Fahrstreifenbreite gibt es dort nicht, und * der Wert stand bis zum naechsten Oeffnen in Rechnung, Tabelle und Ausdruck. * * Geprueft wird am Quelltext und nicht am gebauten Feld: Der Aufruf liegt tief * in einer Tabellenzeile der Zufahrtsliste, und die Wache soll sagen, WELCHE * Stelle die Option traegt - genau die war vergessen worden. Das Verhalten der * Option selbst bewacht tests/ui/fahrstreifenzahl.test.ts. */ const PROJEKTANSICHT = readFileSync('src/ui/views/projectView.ts', 'utf8'); describe('Fahrstreifenzahl der Zufahrt', () => { it('traegt dieselbe Ganzzahlgrenze wie das Feld der Signalgruppentabelle', () => { // Der Ausschnitt um den Aufruf: von der uebergebenen Fahrstreifenzahl bis // zum Ende seiner Optionen. const start = PROJEKTANSICHT.indexOf('arm.lanes,'); expect(start, 'Aufruf mit arm.lanes nicht gefunden').toBeGreaterThan(-1); const ausschnitt = PROJEKTANSICHT.slice(start, start + 1200); expect(ausschnitt, 'Das Feld begrenzt weiterhin nur min, max und step').toContain( 'ganzzahlAbrunden: true', ); }); it('nennt daneben den Grund - eine Anzahl ist keine Messgroesse', () => { // Ohne Begruendung faellt die Option beim naechsten Umbau als // ueberfluessig wieder heraus; im Feld der Signalgruppentabelle steht sie // aus demselben Grund. const start = PROJEKTANSICHT.indexOf('arm.lanes,'); const ausschnitt = PROJEKTANSICHT.slice(start, start + 1200); expect(ausschnitt.toLowerCase()).toContain('anzahl'); }); });