Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import numpy as np | |
| class _FakeUnwrapped: | |
| def __init__(self): | |
| self.segmentation_id_map = {} | |
| self.elapsed_steps = 0 | |
| def evaluate(self, solve_complete_eval=False): | |
| return {"success": False, "fail": False} | |
| class _FakeEnv: | |
| def __init__(self): | |
| self.unwrapped = _FakeUnwrapped() | |
| self._step_idx = 0 | |
| self._last_obs = None | |
| def step(self, action): | |
| self._step_idx += 1 | |
| self.unwrapped.elapsed_steps = self._step_idx | |
| frame = np.full((8, 8, 3), self._step_idx, dtype=np.uint8) | |
| obs = {"front_rgb_list": frame} | |
| self._last_obs = obs | |
| return obs, 0.0, False, False, {} | |
| def test_execute_action_captures_intermediate_front_frames(monkeypatch, reload_module): | |
| oracle_logic = reload_module("oracle_logic") | |
| monkeypatch.setattr( | |
| oracle_logic, | |
| "_fetch_segmentation", | |
| lambda env: np.zeros((1, 8, 8), dtype=np.int64), | |
| ) | |
| monkeypatch.setattr( | |
| oracle_logic, | |
| "_build_solve_options", | |
| lambda env, planner, selected_target, env_id: [ | |
| {"label": "a", "action": "run", "solve": lambda: [env.step(None) for _ in range(3)]} | |
| ], | |
| ) | |
| session = oracle_logic.OracleSession(dataset_root=None, gui_render=False) | |
| session.env = _FakeEnv() | |
| session.planner = object() | |
| session.env_id = "BinFill" | |
| session.color_map = {} | |
| _img, status, done = session.execute_action(0, None) | |
| # Captured during solve(): 1,2,3. update_observation may append the last frame again. | |
| pixel_trace = [int(frame[0, 0, 0]) for frame in session.base_frames] | |
| assert pixel_trace[:3] == [1, 2, 3] | |
| assert len(pixel_trace) >= 3 | |
| assert status.startswith("Executing: a") | |
| assert done is False | |