File size: 1,610 Bytes
9de795a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { describe, expect, it } from "vitest";
import {
  DARSTELLUNGS_LAYER,
  defaultLayers,
  objektSichtbar,
  toggleLayer,
  toggleObjekt,
} from "./layer2d";

describe("layer2d", () => {
  it("Default-Layer: Boxen/Platzbedarf/Masse aus, Rest an", () => {
    const l = defaultLayers();
    expect(l.waende && l.oeffnungen && l.objekte && l.beschriftung && l.ampel).toBe(true);
    expect(l.boxen || l.platzbedarf || l.masse).toBe(false);
  });

  it("DARSTELLUNGS_LAYER deckt genau die Default-Schlüssel ab", () => {
    const ids = DARSTELLUNGS_LAYER.map((d) => d.id).sort();
    expect(ids).toEqual(Object.keys(defaultLayers()).sort());
  });

  it("toggleLayer schaltet unveränderlich um", () => {
    const l = defaultLayers();
    const n = toggleLayer(l, "platzbedarf");
    expect(n.platzbedarf).toBe(true);
    expect(l.platzbedarf).toBe(false); // Original unangetastet
    expect(toggleLayer(n, "platzbedarf").platzbedarf).toBe(false);
  });

  it("Flächen-Layer (Welle C): Default AN, umschaltbar", () => {
    const l = defaultLayers();
    expect(l.flaechen).toBe(true);
    expect(toggleLayer(l, "flaechen").flaechen).toBe(false);
  });

  it("toggleObjekt versteckt/zeigt einzeln, neues Set", () => {
    const leer = new Set<string>();
    const versteckt = toggleObjekt(leer, "a");
    expect(versteckt.has("a")).toBe(true);
    expect(leer.has("a")).toBe(false); // Original unangetastet
    expect(objektSichtbar(versteckt, "a")).toBe(false);
    expect(objektSichtbar(versteckt, "b")).toBe(true);
    expect(objektSichtbar(toggleObjekt(versteckt, "a"), "a")).toBe(true);
  });
});