From b83310fde81af8a1b51bc252360695ecff83d9c5 Mon Sep 17 00:00:00 2001 From: Yuguo Shan <237990095+Mikasa0503@users.noreply.github.com> Date: Sun, 20 Sep 2026 20:49:28 +0800 Subject: [PATCH 1/2] test: cover all simulation integrators --- tests/unit/test_sim.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/unit/test_sim.py b/tests/unit/test_sim.py index ea6b69aa..405ce524 100644 --- a/tests/unit/test_sim.py +++ b/tests/unit/test_sim.py @@ -228,6 +228,21 @@ def test_sim_step(n_worlds: int, n_drones: int, dynamics: Dynamics, control: Con sim.step(2) +@pytest.mark.unit +@pytest.mark.parametrize("integrator", Integrator) +def test_sim_step_integrators(integrator: Integrator): + """Every integration scheme advances a default simulation without invalid state.""" + sim = Sim(integrator=integrator, device="cpu") + sim.step(2) + + assert jnp.all(sim.data.core.steps == 2) + assert jnp.all(jnp.isfinite(sim.data.states.pos)) + assert jnp.all(jnp.isfinite(sim.data.states.quat)) + assert jnp.all(jnp.isfinite(sim.data.states.vel)) + assert jnp.all(jnp.isfinite(sim.data.states.ang_vel)) + sim.close() + + @pytest.mark.unit def test_state_control_forwards_body_rates(): """State control must forward the body rates of the command to the attitude controller.""" From a6795fb0a9a1d3f5d50e7124919e04c3b8e5b677 Mon Sep 17 00:00:00 2001 From: Yuguo Shan <237990095+Mikasa0503@users.noreply.github.com> Date: Sun, 20 Sep 2026 21:56:26 +0800 Subject: [PATCH 2/2] test: validate all simulation state tensors --- tests/unit/test_sim.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/unit/test_sim.py b/tests/unit/test_sim.py index 405ce524..4ffa5316 100644 --- a/tests/unit/test_sim.py +++ b/tests/unit/test_sim.py @@ -240,6 +240,9 @@ def test_sim_step_integrators(integrator: Integrator): assert jnp.all(jnp.isfinite(sim.data.states.quat)) assert jnp.all(jnp.isfinite(sim.data.states.vel)) assert jnp.all(jnp.isfinite(sim.data.states.ang_vel)) + assert jnp.all(jnp.isfinite(sim.data.states.force)) + assert jnp.all(jnp.isfinite(sim.data.states.torque)) + assert jnp.all(jnp.isfinite(sim.data.states.rotor_vel)) sim.close()