Spaces:
Running
Running
File size: 1,525 Bytes
19abe39 e9b7141 19abe39 e9b7141 19abe39 e9b7141 19abe39 e9b7141 19abe39 e9b7141 19abe39 e9b7141 19abe39 e9b7141 19abe39 e9b7141 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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
|