retro-alpha / tests /test_engine.py
sankalphs's picture
Phase 2/3: Gradio Server backend, CRT frontend, engine, agents, mentor, tests, CI/CD
1d0b04b
Raw
History Blame
1.24 kB
"""Unit tests for the Retro Alpha engine."""
import pytest
import engine
def test_new_game():
state = engine.new_game()
assert state.cash_balance == 1_000_000
assert state.total_value() == 1_000_000
assert all(state.portfolio[a] == 0.0 for a in engine.ASSETS)
def test_trade_buy():
state = engine.new_game()
engine.execute_player_trade(state, "nifty_50", "buy", 0.5)
assert state.cash_balance < 1_000_000
assert state.portfolio["nifty_50"] > 0
assert len(state.ledger) == 1
def test_trade_sell():
state = engine.new_game()
engine.execute_player_trade(state, "nifty_50", "buy", 0.5)
engine.execute_player_trade(state, "nifty_50", "sell", 0.5)
assert state.cash_balance > 0
def test_advance_month():
state = engine.new_game()
news = {"headline": "Test", "impact": {a: 0.0 for a in engine.ASSETS}, "duration_months": 1}
engine.advance_month(state, news, [])
assert state.month == 1
assert state.year == 1
def test_game_over():
state = engine.new_game()
state.year = 11
state.month = 1
news = {"headline": "Test", "impact": {a: 0.0 for a in engine.ASSETS}, "duration_months": 1}
engine.advance_month(state, news, [])
assert state.game_over