Save The Tree implementation and acceptance work in progress
Preserve production code, regression fixtures, audio assets and provenance, test infrastructure, and the original-completion plan and progress ledger. Final game and Windows acceptance remain pending; excluded local artifacts and native experiments are not part of this snapshot.
This commit is contained in:
@@ -17,6 +17,7 @@ func _run() -> void:
|
||||
_test_connector_access_and_direction()
|
||||
_test_cache_invalidation_and_revision()
|
||||
_test_connector_only_snapshot()
|
||||
_test_cross_layer_reason_and_live_changes()
|
||||
|
||||
if _failures == 0:
|
||||
print("PASS: %d checks" % _checks)
|
||||
@@ -173,6 +174,35 @@ func _test_connector_only_snapshot() -> void:
|
||||
)
|
||||
|
||||
|
||||
func _test_cross_layer_reason_and_live_changes() -> void:
|
||||
var service = PathServiceScript.new()
|
||||
var start := Vector3i(0, 0, 0)
|
||||
var bridge_front := Vector3i(1, 0, 0)
|
||||
var bridge_back := Vector3i(1, 0, 1)
|
||||
var goal := Vector3i(2, 0, 1)
|
||||
service.rebuild_graph([start,bridge_front,bridge_back,goal])
|
||||
service.configure_connector(&"staff_door",bridge_front,bridge_back,120,false,&"staff")
|
||||
_expect(service.find_path_report(start,goal)[&"reason"] == service.ROUTE_GOAL_UNREACHABLE,"guest cannot cross a staff-only layer door")
|
||||
var forward: Array[Vector3i] = service.find_path(start,goal,null,[&"staff"])
|
||||
_expect(forward == [start,bridge_front,bridge_back,goal],"staff retains the exact forward cross-layer path")
|
||||
_expect(service.find_path_report(goal,start,null,[&"staff"])[&"reason"] == service.ROUTE_GOAL_UNREACHABLE,"one-way layer door remains unreachable in reverse")
|
||||
service.set_connector_enabled(&"staff_door",false)
|
||||
_expect(service.find_path_report(start,goal,null,[&"staff"])[&"reason"] == service.ROUTE_CONNECTOR_UNAVAILABLE,"disabled permitted crossing retains connector-unavailable diagnosis")
|
||||
service.set_connector_enabled(&"staff_door",true)
|
||||
service.set_cell_temporary_block(bridge_front,true)
|
||||
_expect(service.find_path_report(start,goal,null,[&"staff"])[&"reason"] == service.ROUTE_TEMPORARILY_BLOCKED,"blocked permitted crossing retains temporary-block diagnosis")
|
||||
service.set_cell_temporary_block(start,true)
|
||||
_expect(service.find_path_report(start,goal,null,[&"staff"])[&"reason"] == service.ROUTE_START_BLOCKED,"blocked endpoint precedence is preserved")
|
||||
_expect(service.find_path_report(start,goal,service.FRONT,[&"staff"])[&"reason"] == service.ROUTE_ACCESS_LAYER_DENIED,"layer restriction still precedes blocked endpoint")
|
||||
service.set_cell_temporary_block(start,false)
|
||||
service.set_cell_temporary_block(bridge_front,false)
|
||||
_expect(service.find_path(start,goal,null,[&"staff"]) == forward,"reenabled and unblocked crossing restores exact path")
|
||||
service.configure_connector(&"staff_door",bridge_front,bridge_back,120,true,&"staff")
|
||||
_expect(service.find_path(goal,start,null,[&"staff"]) == [goal,bridge_back,bridge_front,start],"current bidirectional configuration restores the reverse path")
|
||||
service.remove_connector(&"staff_door")
|
||||
_expect(service.find_path_report(start,goal,null,[&"staff"])[&"reason"] == service.ROUTE_GOAL_UNREACHABLE,"connector removal immediately restores unreachable result")
|
||||
|
||||
|
||||
func _expect(condition: bool, label: String) -> void:
|
||||
_checks += 1
|
||||
if condition:
|
||||
|
||||
Reference in New Issue
Block a user