lsa-planer

LSA-Planer Professional – Planungssoftware für Lichtsignalanlagen nach RiLSA 2015 und § 45 StVO. EUPL-1.2.

/ tests domain kennwertablage.test.ts

3,1 KB Rohdatei
tests/domain/kennwertablage.test.ts — 65 Zeilen
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 });