"""instance_embed_context_lib 顶栏统计."""
from __future__ import annotations

import unittest

from lib.instance.instance_embed_context_lib import (
    options_funding_label,
    profit_loss_ratio_from_averages,
    profit_loss_ratio_from_trades,
    total_funds_usdt,
)


class TestHeaderStatsLib(unittest.TestCase):
    def test_profit_loss_ratio_from_averages(self):
        self.assertEqual(profit_loss_ratio_from_averages(9.0, -3.0), 3.0)
        self.assertIsNone(profit_loss_ratio_from_averages(9.0, 0))

    def test_profit_loss_ratio_from_trades(self):
        trades = [
            {"effective_pnl_amount": 10},
            {"effective_pnl_amount": 8},
            {"effective_pnl_amount": -4},
            {"effective_pnl_amount": -2},
        ]
        self.assertEqual(profit_loss_ratio_from_trades(trades), 3.0)

    def test_total_funds_usdt(self):
        self.assertEqual(total_funds_usdt(100.5, 59.27), 159.77)
        self.assertIsNone(total_funds_usdt(None, 10))
        self.assertEqual(
            total_funds_usdt(100, 50, options_trading_usdc=0.2, options_trading_usdt=10),
            160.2,
        )

    def test_options_funding_label(self):
        self.assertEqual(options_funding_label(1.5, 10), "1.50 USDC · 10.00 USDT")
        self.assertEqual(options_funding_label(10.19, 0), "10.19 USDC")
        self.assertEqual(options_funding_label(None, 10), "10.00 USDT")
        self.assertEqual(options_funding_label(None, None), "—")


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