PythonLinearNonlinearControl/tests/env/test_first_orger_lag.py

43 lines
1005 B
Python

import pytest
import numpy as np
from PythonLinearNonlinearControl.envs.first_order_lag import FirstOrderLagEnv
class TestFirstOrderLagEnv():
def test_step(self):
env = FirstOrderLagEnv()
curr_x = np.ones(4)
env.reset(init_x=curr_x)
u = np.ones(2) * 0.1
next_x, _, _, _ = env.step(u)
dx = np.dot(env.A, curr_x[:, np.newaxis])
du = np.dot(env.B, u[:, np.newaxis])
expected = (dx + du).flatten()
assert next_x == pytest.approx(expected, abs=1e-5)
def test_bound_step(self):
env = FirstOrderLagEnv()
curr_x = np.ones(4)
env.reset(init_x=curr_x)
u = np.ones(2) * 1e5
next_x, _, _, _ = env.step(u)
dx = np.dot(env.A, curr_x[:, np.newaxis])
du = np.dot(env.B,
np.array(env.config["input_upper_bound"])[:, np.newaxis])
expected = (dx + du).flatten()
assert next_x == pytest.approx(expected, abs=1e-5)