lsa-planer

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

/ tests electron fenstergrund.test.ts

1,7 KB Rohdatei
tests/electron/fenstergrund.test.ts — 45 Zeilen
1 import { describe, expect, it } from 'vitest';
2 import { readFileSync } from 'node:fs';
3 import path from 'node:path';
4 import {
5 FENSTER_GRUND_DUNKEL,
6 FENSTER_GRUND_HELL,
7 fensterGrundfarbe,
8 } from '../../electron/fenstergrund';
9
10 /**
11 * Befund L12 (EN 301 549 Kap. 11.7).
12 *
13 * `createWindow` setzte den Fenstergrund fest auf `#f4f6f9`, den Wert des hellen
14 * Erscheinungsbilds. Im dunklen Modus gab das bei jedem Start einen hellen Blitz.
15 *
16 * Der Hauptprozess hat keine CSS-Variablen; die beiden Werte stehen dort ein
17 * zweites Mal. Diese Pruefung haelt die Doppelung zusammen: Sie liest `--grund`
18 * unmittelbar aus dem Stylesheet.
19 */
20
21 const APP_CSS = readFileSync(path.join(process.cwd(), 'src', 'styles', 'app.css'), 'utf8');
22
23 function grundAus(block: string): string {
24 const beginn = APP_CSS.indexOf(block);
25 expect(beginn, `Block "${block}" steht nicht in app.css`).toBeGreaterThanOrEqual(0);
26 const treffer = /--grund:\s*(#[0-9a-fA-F]{3,8})\s*;/.exec(APP_CSS.slice(beginn));
27 expect(treffer, `Nach "${block}" folgt kein --grund`).not.toBeNull();
28 return (treffer?.[1] ?? '').toLowerCase();
29 }
30
31 describe('Fenstergrund', () => {
32 it('führt genau die Farben, die app.css als --grund setzt', () => {
33 expect(FENSTER_GRUND_HELL.toLowerCase()).toBe(grundAus(':root {'));
34 expect(FENSTER_GRUND_DUNKEL.toLowerCase()).toBe(
35 grundAus(":root[data-erscheinungsbild='dunkel'] {"),
36 );
37 });
38
39 it('unterscheidet hell und dunkel überhaupt', () => {
40 // Der Altstand kannte nur einen Wert - genau das ist der Befund.
41 expect(FENSTER_GRUND_HELL).not.toBe(FENSTER_GRUND_DUNKEL);
42 expect(fensterGrundfarbe(false)).toBe(FENSTER_GRUND_HELL);
43 expect(fensterGrundfarbe(true)).toBe(FENSTER_GRUND_DUNKEL);
44 });
45 });