Spaces:
Running
Running
| from openenv_runtime.environment import OpenEnvOrigamiEnvironment | |
| from openenv_runtime.models import OrigamiAction, OrigamiObservation | |
| def test_openenv_reset_returns_observation(): | |
| env = OpenEnvOrigamiEnvironment(mode="step", max_steps=8) | |
| obs = env.reset(target_name="half_horizontal") | |
| assert isinstance(obs, OrigamiObservation) | |
| assert obs.done is False | |
| assert obs.target_name == "half_horizontal" | |
| assert hasattr(obs, "prompt") and obs.prompt | |
| def test_openenv_step_single_fold_completes_simple_target(): | |
| env = OpenEnvOrigamiEnvironment(mode="step", max_steps=8) | |
| env.reset(target_name="half_horizontal") | |
| action = OrigamiAction( | |
| from_point=[0.0, 0.5], | |
| to_point=[1.0, 0.5], | |
| assignment="V", | |
| ) | |
| obs = env.step(action) | |
| assert obs.reward is not None | |
| assert obs.reward > 1.0 | |
| assert obs.done is True | |
| def test_openenv_action_alias_from_to(): | |
| """Client can send 'from' and 'to' (JSON-friendly) instead of from_point/to_point.""" | |
| action = OrigamiAction.model_validate({ | |
| "from": [0.0, 0.5], | |
| "to": [1.0, 0.5], | |
| "assignment": "V", | |
| }) | |
| assert action.from_point == [0.0, 0.5] | |
| assert action.to_point == [1.0, 0.5] | |
| def test_openenv_state_contains_target_and_step(): | |
| env = OpenEnvOrigamiEnvironment(mode="step", max_steps=8) | |
| env.reset(target_name="half_horizontal") | |
| state = env.state() | |
| assert "paper" in state | |
| assert state.get("target") == "half_horizontal" | |
| assert state.get("step") == 0 | |