Task 11: Figuren (Mannequin/Superhero Male/Female) mit auf ual.glb retargeteten Animationen, Frisuren, vier SUVs auf angehefteten Chunks, ein lil-gui-Debug-Panel (Figur/Frisur/Höhe/Hitbox/Chunk-Grenzen/ Kartenbild/Nebel/Wahrzeichen-Sprung) und die verpflichtende Namensnennung fürs HUD (Kartenkacheln, Wahrzeichen, SUV, Texturen, Palme, Figuren — jede Quelle mit ihrer eigenen Lizenz). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38 lines
1.7 KiB
JavaScript
38 lines
1.7 KiB
JavaScript
import { describe, expect, it } from "vitest";
|
|
import { buildAttribution } from "../src/ui/hud.js";
|
|
|
|
// Die Namensnennung ist Pflicht (CC BY, s. task-11-brief.md), keine Kosmetik — deshalb wird
|
|
// die Textzusammensetzung hier ohne Browser geprüft statt nur im laufenden HUD betrachtet.
|
|
describe("buildAttribution", () => {
|
|
const manifest = {
|
|
attribution: "Kartenkacheln: GTA VI Map (CC BY 4.0) — https://map.gtadb.org, YANIS v15. " +
|
|
"Wahrzeichen: rolux/gtamaplib-vc (Unlicense).",
|
|
};
|
|
|
|
it("behält den Manifest-Text wörtlich bei", () => {
|
|
expect(buildAttribution(manifest)).toContain(manifest.attribution);
|
|
});
|
|
|
|
it("ergänzt alle vier Modellquellen mit ihrer jeweiligen Lizenz", () => {
|
|
const text = buildAttribution(manifest);
|
|
expect(text).toContain("Boris731");
|
|
expect(text).toContain("Poly Haven");
|
|
expect(text).toContain("Nobiax");
|
|
expect(text).toContain("Quaternius");
|
|
expect(text).toMatch(/Boris731[^.]*CC BY/);
|
|
expect(text).toMatch(/Poly Haven[^.]*CC0/);
|
|
expect(text).toMatch(/Nobiax[^.]*CC0/);
|
|
expect(text).toMatch(/Quaternius[^.]*CC0/);
|
|
});
|
|
|
|
// Ruling (task-11-brief.md): keine Lizenz kürzen, keine zwei Lizenzen in einer Zeile
|
|
// vermischen, kein CC0 für etwas behaupten, das CC BY ist — der SUV-Satz muss darum
|
|
// isoliert bleiben und darf nicht in denselben Satz wie ein CC0-Eintrag rutschen.
|
|
it("vermischt die SUV-Lizenz (CC BY) nicht mit einer CC0-Angabe im selben Satz", () => {
|
|
const text = buildAttribution(manifest);
|
|
const suvSentence = text.split(".").find((s) => s.includes("Boris731"));
|
|
expect(suvSentence).toBeTruthy();
|
|
expect(suvSentence).not.toContain("CC0");
|
|
});
|
|
});
|