import { readFileSync } from 'node:fs'; import { describe, expect, it } from 'vitest'; import * as constants from '@/domain/rilsa/constants'; import { abflusszeit } from '@/domain/rilsa/capacity'; /* * Befund 49 (Fassung 5.11.0): Der HBS-Zeitzuschlag von 1 s stand als * eigene Konstante in `capacity.ts`. * * Er ist ein Kennwert und wird auch als solcher gefuehrt: Die Unterlagen * nennen ihn in der Kapazitaetstabelle mit eigener Zeile, Fundstelle * 'hbs-kapazitaet' und Pruefstand "gesichert", und das gedruckte * Fundstellenverzeichnis nennt ihn in Verwendung und Hinweis. Er war damit der * einzige Kennwert jener Tabelle ausserhalb von `constants.ts` - gegen die * Regel ("src/domain/rilsa/constants.ts ist die einzige Quelle aller * Kennwerte") und gegen die Zusage der Unterlagen. Ein Pruefer, der die * Herkunft der Zahl im Quelltext nachschlaegt, fand sie nicht an der Stelle, * die die Unterlagen nennen. * * Derselbe Fall war fuer den Pkw-Gleichwert 2,0 schon einmal entschieden * (Fassung 5.5.0, Frage E6): Verlagerung nach `constants.ts`, keine Zahl geaendert. * * GEGEN DEN ALTSTAND schlagen die beiden ersten Faelle fehl (die Konstante gab * es in `constants.ts` nicht, und `capacity.ts` erklaerte sie selbst); der * dritte besteht dort ebenso - der gerechnete Wert bleibt unveraendert. * * NACHTRAG (Fassung 5.11.0): Nach der Verlagerung stand der * BELEG des Kennwerts an zwei Stellen woertlich - am Kennwert in * `constants.ts` und weiter im Funktionskommentar zu `abflusszeit`. Derselbe * Sachverhalt gehoert genau einmal beschrieben; die Musterstelle im selben * Quelltext loest es so (capacity.ts zum Schwerverkehrsfaktor: "Belege siehe * HBS_PKW_GLEICHWERTE"). Der zweite Fall bewacht das. */ const CAPACITY_QUELLTEXT = readFileSync('src/domain/rilsa/capacity.ts', 'utf8'); const CONSTANTS_QUELLTEXT = readFileSync('src/domain/rilsa/constants.ts', 'utf8'); describe('Ablage des HBS-Zeitzuschlags', () => { it('fuehrt den Zeitzuschlag in constants.ts', () => { const werte = constants as unknown as Record; expect(werte['HBS_ABFLUSSZUSCHLAG']).toBe(1); }); it('erklaert ihn nicht ein zweites Mal in capacity.ts', () => { expect(CAPACITY_QUELLTEXT).not.toMatch(/const HBS_ABFLUSSZUSCHLAG/); // Benutzt wird er dort weiterhin - nur eben der eingebundene Wert. expect(CAPACITY_QUELLTEXT).toMatch(/HBS_ABFLUSSZUSCHLAG/); // Und auch der Beleg steht nur am Kennwert: Der Funktionskommentar zu // `abflusszeit` behaelt die Formel und verweist fuer die Herkunft dorthin, // wie es der Schwerverkehrsfaktor mit den Pkw-Gleichwerten vormacht. expect( CAPACITY_QUELLTEXT, 'Der Beleg des Zuschlags gehoert an den Kennwert, nicht zusaetzlich an die Funktion', ).not.toMatch(/Leyn 2016/); expect(CAPACITY_QUELLTEXT).toMatch(/Belege siehe HBS_ABFLUSSZUSCHLAG/); expect(CONSTANTS_QUELLTEXT).toMatch(/Leyn 2016/); }); it('rechnet unveraendert tA = tF + 1 s je Freigabezeitfenster', () => { expect(abflusszeit(10, 90)).toBe(11); expect(abflusszeit(10, 90, { freigabefenster: 2 })).toBe(12); expect(abflusszeit(10, 90, { verfahren: 'HCM' })).toBe(10); }); });