extends SceneTree var checks:=0 var failures:=0 func expect(ok: bool,label:String)->void: checks+=1 if not ok:failures+=1;push_error(label) class Fixture extends RefCounted: var facility_service:=FacilityService.new() var path_service:=PathService.new() func _initialize()->void:call_deferred("run") func run()->void: var fixture:=Fixture.new() var bridge=preload("res://scripts/environment/facility_cleaning_bridge.gd").new() bridge.configure(fixture) fixture.facility_service.create_instance({&"instance_id":&"target",&"definition_id":&"reception",&"origin":Vector3i(3,0,0),&"occupied_cells":[Vector3i(3,0,0),Vector3i(4,0,0)]}) var worker:=StaffRuntime.new();worker.current_cell=Vector3i(6,0,0) var task:=StaffTask.new().configure(&"clean",&"facility_clean",50,0,{&"target_entity_id":&"target",&"target_cell":Vector3i(2,0,0),&"estimated_minutes":8}) var cells: Array[Vector3i]=[Vector3i(2,0,0),Vector3i(4,0,0),Vector3i(5,0,0),Vector3i(6,0,0)] fixture.path_service.rebuild_graph(cells) expect(bridge.prepare_route(task,worker) and task.target_cell==Vector3i(5,0,0),"isolated first access is replaced by reachable closest access") var destination:=task.target_cell expect(bridge.prepare_route(task,worker) and task.target_cell==destination,"reachable destination remains stable") cells=[Vector3i(2,0,0),Vector3i(4,0,0),Vector3i(6,0,0)] fixture.path_service.rebuild_graph(cells) expect(destination in bridge.access_cells(fixture.facility_service.get_instance(&"target"),fixture.path_service,false) and destination not in bridge.access_cells(fixture.facility_service.get_instance(&"target"),fixture.path_service),"blocked saved destination remains geometrically valid while not walkable") expect(not bridge.prepare_route(task,worker) and worker.current_cell==Vector3i(6,0,0) and task.target_cell==destination,"total isolation neither moves worker nor invents destination") cells=[Vector3i(2,0,0),Vector3i(3,0,0),Vector3i(4,0,0),Vector3i(5,0,0),Vector3i(6,0,0)] fixture.path_service.rebuild_graph(cells) expect(bridge.prepare_route(task,worker),"route resumes after reconnection") fixture.facility_service.unregister_instance(&"target") expect(not bridge.prepare_route(task,worker),"removed facility has no work destination") print("Cleaning access: %d checks, %d failures"%[checks,failures]);quit(failures)