import pytest from multi_swarm.cerbero.tools import CerberoTools def test_tools_dispatch_sma(mocker): fake_client = mocker.MagicMock() fake_client.call_tool.return_value = {"value": 100.0} t = CerberoTools(fake_client) out = t.sma(exchange="bybit", symbol="BTCUSDT", timeframe="1h", length=20) fake_client.call_tool.assert_called_once_with( "bybit", "sma", {"symbol": "BTCUSDT", "timeframe": "1h", "length": 20} ) assert out == {"value": 100.0} def test_tools_dispatch_rsi(mocker): fake_client = mocker.MagicMock() fake_client.call_tool.return_value = {"value": 55.0} t = CerberoTools(fake_client) out = t.rsi(exchange="bybit", symbol="BTCUSDT", timeframe="1h", length=14) fake_client.call_tool.assert_called_once_with( "bybit", "rsi", {"symbol": "BTCUSDT", "timeframe": "1h", "length": 14} ) assert out == {"value": 55.0} def test_tools_unknown_raises(mocker): fake_client = mocker.MagicMock() t = CerberoTools(fake_client) with pytest.raises(AttributeError): t.nonexistent_tool() # type: ignore[attr-defined]