73efad6fa5
Co-authored-by: Cursor <cursoragent@cursor.com>
63 lines
2.2 KiB
Python
63 lines
2.2 KiB
Python
"""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.assertEqual(total_funds_usdt(None, 10), 10.0)
|
|
self.assertIsNone(total_funds_usdt(None, None))
|
|
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")
|
|
self.assertEqual(options_funding_label(10.19, 0), "10.19 USDC")
|
|
self.assertEqual(options_funding_label(None, 10), "—")
|
|
self.assertEqual(options_funding_label(None, None), "—")
|
|
|
|
def test_trading_account_label_coin(self):
|
|
from lib.instance.instance_embed_context_lib import trading_account_label
|
|
|
|
self.assertEqual(trading_account_label(100, None, None, margin_mode="usdc"), "100.00U")
|
|
self.assertEqual(
|
|
trading_account_label(100, 0.2, 0.001, margin_mode="coin"),
|
|
"100.00 USDT / 0.2 ETH / 0.001 BTC",
|
|
)
|
|
self.assertEqual(
|
|
trading_account_label(0.02, 0.0, None, margin_mode="coin"),
|
|
"0.02 USDT",
|
|
)
|
|
self.assertEqual(
|
|
trading_account_label(12.5, 0.004321, None, margin_mode="coin"),
|
|
"12.50 USDT / 0.004321 ETH",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|