Files
crypto_monitor/tests/test_instance_header_stats_lib.py
T

50 lines
1.7 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), "")
self.assertEqual(
options_funding_label(None, 12.5, 0.004321, "coin", "ETH"),
"12.50 USDT / 0.004321 ETH",
)
if __name__ == "__main__":
unittest.main()