"""子代理持仓:三所开仓价字段统一解析."""
from __future__ import annotations

import sys
import unittest
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "manual_trading_hub"))

from agent import _position_entry_price  # noqa: E402


class TestHubAgentEntryPrice(unittest.TestCase):
    def test_binance_entry_price(self):
        px = _position_entry_price({"entryPrice": 65851.6, "info": {}})
        self.assertAlmostEqual(px, 65851.6)

    def test_okx_avg_px(self):
        px = _position_entry_price({"info": {"avgPx": "72.731"}})
        self.assertAlmostEqual(px, 72.731)

    def test_gate_info_entry(self):
        px = _position_entry_price({"info": {"entry_price": "0.2232"}})
        self.assertAlmostEqual(px, 0.2232)

    def test_missing_returns_none(self):
        self.assertIsNone(_position_entry_price({"info": {}}))


if __name__ == "__main__":
    unittest.main()
