from catopt_studio import LocalProblem from catopt_studio.adapters import RoverAdapter, HabitatAdapter def test_rover_adapter_propose_delta_low_battery(): lp = LocalProblem(id="r1", domain="rover", assets={"battery": 10}, objective="navigate") ra = RoverAdapter() delta = ra.propose_delta(lp, author="tester") assert delta.author == "tester" assert delta.contract_id == "r1" assert delta.delta.get("action") == "hold_position" def test_rover_to_canonical_contains_expected_keys(): lp = LocalProblem(id="r2", domain="rover", assets={"wheel": 2}, objective="survey") ra = RoverAdapter() canon = ra.to_canonical(lp) assert canon["adapter"] == "rover_planner" assert canon["id"] == "r2" def test_habitat_adapter_respects_no_move_constraint(): lp = LocalProblem(id="h1", domain="habitat", assets={}, constraints=["no_move_zone"], objective="manage") ha = HabitatAdapter() delta = ha.propose_delta(lp, author="hub") assert delta.delta.get("action") == "pause" assert delta.author == "hub"