Add Python TrainSim with loop track map and physics.
Some checks are pending
CodeView TrainSim CI / test (push) Waiting to run
CodeView TrainSim CI / docker (push) Blocked by required conditions

FastAPI server, replaceable JSON config, tests, Dockerfile.
Pairs with ATO via spec/interface.md contract.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Mona Lisa 2026-06-14 20:37:22 +00:00
parent 45c95836ef
commit 9c5ef3a5cd
18 changed files with 414 additions and 18 deletions

26
tests/test_api.py Normal file
View file

@ -0,0 +1,26 @@
import os
from fastapi.testclient import TestClient
os.environ.setdefault("SIM_CONFIG", "config/sim.default.json")
os.environ.setdefault("TRACK_CONFIG", "config/track.default.json")
from trainsim.app import create_app # noqa: E402
client = TestClient(create_app())
def test_health():
assert client.get("/health").json()["status"] == "ok"
def test_state_shape():
s = client.get("/train/state").json()
assert "speed_mps" in s and "track_length_m" in s
def test_actuate_and_start():
client.post("/sim/start")
client.post("/train/actuate", json={"traction_pct": 50, "brake_pct": 0})
s = client.get("/train/state").json()
assert s["sim_running"] is True