Eine eigenständige Kommandozeilen-Anwendung (tools/NuiBatchValidate), die Parser, Serializer und Round-Trip-Treue gegen einen kompletten, echten Ordner voller .nui-Dateien prüft — unabhängig von der kuratierten, im Repository mitgelieferten Test-Fixture-Menge.
NuiBatchValidate.exe <verzeichnis> [--verbose]
Was geprüft wird, je Datei:
Beispielausgabe:
=== NuiBatchValidate summary ===
directory: C:\...\Panthera\nui
files scanned: 421
crashes: 0
round-trip mismatches:0
files with errors: 0
files with warnings: 0
diagnostics: 0 info, 0 warning, 0 error
Mit --verbose werden zusätzlich Details zu jeder Datei mit Fehlern oder Warnungen ausgegeben.
Wann benutzen: Als abschließendes Gate nach jeder Änderung an Parser, Serializer oder Schema — bevor eine Änderung als abgeschlossen gilt, läuft dieses Werkzeug gegen den vollständigen realen Asset-Korpus, nicht nur gegen die automatisierte Testsuite. Ein grüner NuiBatchValidate-Lauf über hunderte reale Dateien ist eine deutlich stärkere Aussage als grüne Unit-Tests über eine Handvoll kuratierter Beispieldateien.
Für sichtbare Rendering-Unterschiede reicht ein Screenshot-Vergleich mit dem Original oft nicht als Beweis — deshalb existiert in der Testsuite (tests/EditorCanvasTests/RenderDumpTool.cpp) ein opt-in Diagnosewerkzeug, das ein echtes Dokument mit echten Assets in ein PNG-Bild rendert, statt nur auf dem Bildschirm anzuzeigen:
$env:NUISTUDIO_RENDERDUMP_ROOT = "C:\Pfad\zu\Panthera"
$env:NUISTUDIO_RENDERDUMP_FILE = "C:\Pfad\zu\window_main_inventory_bag.nui"
$env:NUISTUDIO_RENDERDUMP_OUT = "C:\temp\render_dump.png"
EditorCanvasTests.exe "[renderdump]"
Das Werkzeug initialisiert ein echtes (WARP-)Grafikgerät, rendert das angegebene Dokument mit dem echten Ressourcen-Root — also mit echten Sprites und echtem Text, nicht mit Platzhaltern — und schreibt das Ergebnis als PNG. So lässt sich ein Rendering-Ergebnis direkt, pixelgenau und reproduzierbar inspizieren, statt sich auf einen manuell angefertigten Screenshot verlassen zu müssen.
Dieses Werkzeug ist bewusst kein Teil der automatisierten Standard-Testsuite (Tag
[.]schließt es vom Standardlauf aus) — es ist ein gezieltes Diagnosewerkzeug für konkrete, manuell zu untersuchende Verdachtsfälle, kein Dauerbetrieb-Regressionstest.
Ebenfalls opt-in (tests/EditorCanvasTests/PerformanceStressTool.cpp, Tag [.]): rendert ein echtes Dokument viele Male hintereinander (Standard: 200 Durchläufe) und misst dabei Frame-Zeit, Prozess-Arbeitsspeicher (Working Set) und D3D12-Debug-Layer-Meldungen — Phase 9 "Performance Profiling" des ursprünglichen Phasenplans.
$env:NUISTUDIO_PERFSTRESS_ROOT = "C:\Pfad\zu\Panthera"
$env:NUISTUDIO_PERFSTRESS_FILE = "C:\Pfad\zu\window_system_keymapping.nui"
$env:NUISTUDIO_PERFSTRESS_ITERATIONS = "200"
EditorCanvasTests.exe "[perfstress]"
Ein einmaliger, ungemessener Aufwärm-Render läuft vor der Messschleife (genau wie beim ersten echten Öffnen einer Datei im Editor: jedes referenzierte Sprite/Glyph wird einmal in den Atlas geladen) — die eigentliche Messung erfasst danach den stationären Zustand, nicht die einmaligen Ladekosten. Der Leak-Check vergleicht bewusst die zweite Hälfte der Checkpoint-Reihe gegen sich selbst (Mitte vs. Ende des Laufs), nicht den Anfang gegen das Ende — die ersten 10–20 % zeigen selbst nach dem Aufwärm-Render noch reales, aber einmaliges Setzverhalten (WARP-interne Caches, im Debug-Build zusätzlich die Debug-CRT-Heap-Fragmentierung), das sich sonst fälschlich wie ein Speicherleck liest.
Ergebnis auf der größten echten Datei des Korpus (window_system_keymapping.nui, 467 Controls, 97 KB — größte Datei in Panthera und Netherworld): Release ~8,7 ms Render-Zeit pro Frame (Median) auf dem WARP-Software-Renderer, Debug ~27,6 ms — beide mit einem zweite-Hälfte-Speicherzuwachs von deutlich unter 1 MB über hunderte Durchläufe und null D3D12-Debug-Layer-Meldungen.