lsa-planer
LSA-Planer Professional – Planungssoftware für Lichtsignalanlagen nach RiLSA 2015 und § 45 StVO. EUPL-1.2.
/ tests domain kennwertablage.test.ts
| 1 | import { readFileSync } from 'node:fs'; |
| 2 | import { describe, expect, it } from 'vitest'; |
| 3 | import * as constants from '@/domain/rilsa/constants'; |
| 4 | import { abflusszeit } from '@/domain/rilsa/capacity'; |
| 5 | |
| 6 | /* |
| 7 | * Befund 49 (Fassung 5.11.0): Der HBS-Zeitzuschlag von 1 s stand als |
| 8 | * eigene Konstante in `capacity.ts`. |
| 9 | * |
| 10 | * Er ist ein Kennwert und wird auch als solcher gefuehrt: Die Unterlagen |
| 11 | * nennen ihn in der Kapazitaetstabelle mit eigener Zeile, Fundstelle |
| 12 | * 'hbs-kapazitaet' und Pruefstand "gesichert", und das gedruckte |
| 13 | * Fundstellenverzeichnis nennt ihn in Verwendung und Hinweis. Er war damit der |
| 14 | * einzige Kennwert jener Tabelle ausserhalb von `constants.ts` - gegen die |
| 15 | * Regel ("src/domain/rilsa/constants.ts ist die einzige Quelle aller |
| 16 | * Kennwerte") und gegen die Zusage der Unterlagen. Ein Pruefer, der die |
| 17 | * Herkunft der Zahl im Quelltext nachschlaegt, fand sie nicht an der Stelle, |
| 18 | * die die Unterlagen nennen. |
| 19 | * |
| 20 | * Derselbe Fall war fuer den Pkw-Gleichwert 2,0 schon einmal entschieden |
| 21 | * (Fassung 5.5.0, Frage E6): Verlagerung nach `constants.ts`, keine Zahl geaendert. |
| 22 | * |
| 23 | * GEGEN DEN ALTSTAND schlagen die beiden ersten Faelle fehl (die Konstante gab |
| 24 | * es in `constants.ts` nicht, und `capacity.ts` erklaerte sie selbst); der |
| 25 | * dritte besteht dort ebenso - der gerechnete Wert bleibt unveraendert. |
| 26 | * |
| 27 | * NACHTRAG (Fassung 5.11.0): Nach der Verlagerung stand der |
| 28 | * BELEG des Kennwerts an zwei Stellen woertlich - am Kennwert in |
| 29 | * `constants.ts` und weiter im Funktionskommentar zu `abflusszeit`. Derselbe |
| 30 | * Sachverhalt gehoert genau einmal beschrieben; die Musterstelle im selben |
| 31 | * Quelltext loest es so (capacity.ts zum Schwerverkehrsfaktor: "Belege siehe |
| 32 | * HBS_PKW_GLEICHWERTE"). Der zweite Fall bewacht das. |
| 33 | */ |
| 34 | |
| 35 | const CAPACITY_QUELLTEXT = readFileSync('src/domain/rilsa/capacity.ts', 'utf8'); |
| 36 | const CONSTANTS_QUELLTEXT = readFileSync('src/domain/rilsa/constants.ts', 'utf8'); |
| 37 | |
| 38 | describe('Ablage des HBS-Zeitzuschlags', () => { |
| 39 | it('fuehrt den Zeitzuschlag in constants.ts', () => { |
| 40 | const werte = constants as unknown as Record<string, unknown>; |
| 41 | expect(werte['HBS_ABFLUSSZUSCHLAG']).toBe(1); |
| 42 | }); |
| 43 | |
| 44 | it('erklaert ihn nicht ein zweites Mal in capacity.ts', () => { |
| 45 | expect(CAPACITY_QUELLTEXT).not.toMatch(/const HBS_ABFLUSSZUSCHLAG/); |
| 46 | // Benutzt wird er dort weiterhin - nur eben der eingebundene Wert. |
| 47 | expect(CAPACITY_QUELLTEXT).toMatch(/HBS_ABFLUSSZUSCHLAG/); |
| 48 | |
| 49 | // Und auch der Beleg steht nur am Kennwert: Der Funktionskommentar zu |
| 50 | // `abflusszeit` behaelt die Formel und verweist fuer die Herkunft dorthin, |
| 51 | // wie es der Schwerverkehrsfaktor mit den Pkw-Gleichwerten vormacht. |
| 52 | expect( |
| 53 | CAPACITY_QUELLTEXT, |
| 54 | 'Der Beleg des Zuschlags gehoert an den Kennwert, nicht zusaetzlich an die Funktion', |
| 55 | ).not.toMatch(/Leyn 2016/); |
| 56 | expect(CAPACITY_QUELLTEXT).toMatch(/Belege siehe HBS_ABFLUSSZUSCHLAG/); |
| 57 | expect(CONSTANTS_QUELLTEXT).toMatch(/Leyn 2016/); |
| 58 | }); |
| 59 | |
| 60 | it('rechnet unveraendert tA = tF + 1 s je Freigabezeitfenster', () => { |
| 61 | expect(abflusszeit(10, 90)).toBe(11); |
| 62 | expect(abflusszeit(10, 90, { freigabefenster: 2 })).toBe(12); |
| 63 | expect(abflusszeit(10, 90, { verfahren: 'HCM' })).toBe(10); |
| 64 | }); |
| 65 | }); |