Spaces:
Running
Running
File size: 1,713 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 | import { describe, expect, it } from "vitest";
import { dressingBauteile, DRESSING_TYPEN } from "./dressing3d-kits";
import { passtInBbox } from "./moebel3d.tsx";
// Reale Deko-Masse (Meter) aus data/dressing/bad.json + extreme Seitenverhältnisse.
const MASSE: [number, number, number][] = [
[0.07, 0.07, 0.18], // Seifenspender
[0.08, 0.08, 0.11], // Zahnputzbecher
[0.3, 0.22, 0.14], // Handtuchstapel (flach, breit)
[0.28, 0.16, 0.2], // Ablage-Tray
[0.24, 0.24, 0.55], // Zimmerpflanze (schmal, hoch)
[0.28, 0.09, 0.13], // Gewürzgläser-Set (sehr flach in d)
[0.2, 0.28, 0.34], // Kaffeemaschine (tief)
[0.3, 0.22, 0.06], // Geschirrtuch (extrem flach in h)
[0.5, 0.5, 0.5], // Würfel-Kontrolle
];
describe("dressingBauteile – bbox-Treue", () => {
it("hält jeden Deko-Bausatz vollständig innerhalb der bbox w×d×h", () => {
for (const typ of DRESSING_TYPEN) {
for (const [w, d, h] of MASSE) {
const teile = dressingBauteile(typ, w, d, h);
expect(teile.length, `${typ} liefert Bauteile`).toBeGreaterThan(0);
expect(passtInBbox(teile, w, d, h), `${typ} bleibt in bbox`).toBe(true);
}
}
});
it("formt bekannte Deko-Typen mehrteilig (nicht als nackte Box)", () => {
for (const typ of DRESSING_TYPEN) {
expect(dressingBauteile(typ, 0.3, 0.2, 0.4).length, `${typ} ist mehrteilig`).toBeGreaterThan(
1,
);
}
});
});
describe("dressingBauteile – Fallback", () => {
it("gibt für unbekannte Typen genau die volle Box zurück", () => {
expect(dressingBauteile("gibtsnicht", 0.2, 0.3, 0.4)).toEqual([
{ form: "box", groesse: [0.2, 0.4, 0.3], pos: [0, 0, 0], rolle: "koerper" },
]);
});
});
|