from django.test import TestCase from core.exchanges.common import sl_price_to_percent, tp_price_to_percent class CommonTestCase(TestCase): # TP def test_tp_price_to_percent_initial_long(self): """ Test that the TP price to percent conversion works for long trades. """ tp_price = 1.1 # 10% current_price = 1.0 current_units = 1 unrealised_pl = 0 percent = tp_price_to_percent( tp_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 10) def test_tp_price_to_percent_initial_short(self): """ Test that the TP price to percent conversion works for short trades. """ tp_price = 0.9 # 10% current_price = 1.0 current_units = 1 unrealised_pl = 0 percent = tp_price_to_percent( tp_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 10) def test_tp_price_to_percent_change_long(self): """ Test that the TP price to percent conversion works for long trades when the price has changed. """ tp_price = 1.2 # 20% current_price = 1.1 # + 10% current_units = 1 unrealised_pl = 0.1 # 10% percent = tp_price_to_percent( tp_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 20) def test_tp_price_to_percent_change_short(self): """ Test that the TP price to percent conversion works for short trades when the price has changed. """ tp_price = 0.8 # 20% current_price = 1.1 # + 10% current_units = 1 unrealised_pl = 0.1 # 10% percent = tp_price_to_percent( tp_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 20) # For multiple units def test_tp_price_to_percent_initial_long_multi(self): """ Test that the TP price to percent conversion works for long trades with multiple units. """ tp_price = 1.1 # 10% current_price = 1.0 current_units = 10 unrealised_pl = 0 percent = tp_price_to_percent( tp_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 10) def test_tp_price_to_percent_initial_short_multi(self): """ Test that the TP price to percent conversion works for short trades with multiple units. """ tp_price = 0.9 # 10% current_price = 1.0 current_units = 10 unrealised_pl = 0 percent = tp_price_to_percent( tp_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 10) def test_tp_price_to_percent_change_long_multi(self): """ Test that the TP price to percent conversion works for long trades when the price has changed, with multiple units. """ tp_price = 1.2 # 20% current_price = 1.1 # + 10% current_units = 10 unrealised_pl = 1 # 10% percent = tp_price_to_percent( tp_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 20) def test_tp_price_to_percent_change_short_multi(self): """ Test that the TP price to percent conversion works for short trades when the price has changed, with multiple units. """ tp_price = 0.8 # 20% current_price = 1.1 # + 10% current_units = 10 unrealised_pl = 1 # 10% percent = tp_price_to_percent( tp_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 20) # SL def test_SL_price_to_percent_initial_long(self): """ Test that the SL price to percent conversion works for long trades. """ sl_price = 1.1 # 10% current_price = 1.0 current_units = 1 unrealised_pl = 0 percent = sl_price_to_percent( sl_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 10) def test_sl_price_to_percent_initial_short(self): """ Test that the SL price to percent conversion works for short trades. """ sl_price = 0.9 # 10% current_price = 1.0 current_units = 1 unrealised_pl = 0 percent = sl_price_to_percent( sl_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 10) def test_sl_price_to_percent_change_long(self): """ Test that the SL price to percent conversion works for long trades when the price has changed. """ sl_price = 1.2 # 20% current_price = 1.1 # + 10% current_units = 1 unrealised_pl = 0.1 # 10% percent = sl_price_to_percent( sl_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 20) def test_sl_price_to_percent_change_short(self): """ Test that the SL price to percent conversion works for short trades when the price has changed. """ sl_price = 0.8 # 20% current_price = 1.1 # + 10% current_units = 1 unrealised_pl = 0.1 # 10% percent = sl_price_to_percent( sl_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 20) # For multiple units def test_sl_price_to_percent_initial_long_multi(self): """ Test that the SL price to percent conversion works for long trades with multiple units. """ sl_price = 1.1 # 10% current_price = 1.0 current_units = 10 unrealised_pl = 0 percent = sl_price_to_percent( sl_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 10) def test_sl_price_to_percent_initial_short_multi(self): """ Test that the SL price to percent conversion works for short trades with multiple units. """ sl_price = 0.9 # 10% current_price = 1.0 current_units = 10 unrealised_pl = 0 percent = sl_price_to_percent( sl_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 10) def test_sl_price_to_percent_change_long_multi(self): """ Test that the SL price to percent conversion works for long trades when the price has changed, with multiple units. """ sl_price = 1.2 # 20% current_price = 1.1 # + 10% current_units = 10 unrealised_pl = 1 # 10% percent = sl_price_to_percent( sl_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 20) def test_sl_price_to_percent_change_short_multi(self): """ Test that the SL price to percent conversion works for short trades when the price has changed, with multiple units. """ sl_price = 0.8 # 20% current_price = 1.1 # + 10% current_units = 10 unrealised_pl = 1 # 10% percent = sl_price_to_percent( sl_price, current_price, current_units, unrealised_pl ) self.assertEqual(percent, 20)