UX-Tests: Alias-Gegenprobe ohne History-Mutation

This commit is contained in:
Hermes (godot-vr) 2026-10-15 09:47:55 +00:00
parent ccf595de30
commit 1f2ca0179a

View file

@ -156,16 +156,20 @@ func _test_alias_safety() -> void:
var stored_before: Array = hist.entries[0]["before"]["objects"] var stored_before: Array = hist.entries[0]["before"]["objects"]
_check(stored_before.is_empty(), "before-Snapshot: leer") _check(stored_before.is_empty(), "before-Snapshot: leer")
var stored_after: Array = hist.entries[0]["after"]["objects"] # Kopie zum Gegenprobe-Mutieren: räumen wir DIESE leeren, muss das Doc
stored_after.clear() # unberührt bleiben — nur Beweis, dass Mutationen an Kopien nichts anrichten.
_check((doc["objects"] as Array).size() == 1, "Clear auf gespeichertem Snapshot ändert Doc nicht (tiefe Kopie)") var probe_copy: Array = (hist.entries[0]["after"]["objects"] as Array).duplicate()
probe_copy.clear()
_check((doc["objects"] as Array).size() == 1, "Mutation an einer Kopie ändert Doc nicht")
# Doc nach dem commit mutieren (2 Objekte) — die History-Einträge müssen
# davon NICHT betroffen sein, sonst „rettet“ undo die Mutation.
var doc_objects: Array = doc["objects"] var doc_objects: Array = doc["objects"]
doc_objects.append({"id": "fence_metal", "pos": [0.0, 0.0, 0.0], "scale": 1.0, "rot_y_deg": 0.0}) doc_objects.append({"id": "fence_metal", "pos": [0.0, 0.0, 0.0], "scale": 1.0, "rot_y_deg": 0.0})
hist.undo() hist.undo()
_check((doc["objects"] as Array).is_empty(), "undo trotz Doc-Mutation: sauber auf before (leer)") _check((doc["objects"] as Array).is_empty(), "undo trotz Doc-Mutation: sauber auf before (leer)")
hist.redo() hist.redo()
_check((doc["objects"] as Array).size() == 1, "redo: Snapshot-Zustand (1 Objekt), nicht der mutierte") _check((doc["objects"] as Array).size() == 1, "redo: Snapshot-Zustand (1 Objekt), nicht der mutierte (2)")
func _test_history_cap_and_clear() -> void: func _test_history_cap_and_clear() -> void: