summaryrefslogtreecommitdiff
path: root/test_trade_queue.py
diff options
context:
space:
mode:
Diffstat (limited to 'test_trade_queue.py')
-rw-r--r--test_trade_queue.py36
1 files changed, 24 insertions, 12 deletions
diff --git a/test_trade_queue.py b/test_trade_queue.py
index 89c75e8..70a795a 100644
--- a/test_trade_queue.py
+++ b/test_trade_queue.py
@@ -1,17 +1,19 @@
+from decimal import Decimal
import unittest
from datetime import datetime
from trade_queue import FIFOQueue
+
class TestFIFOQueue(unittest.TestCase):
def setUp(self):
"""
Set up a FIFOQueue instance and some test trades.
"""
self.queue = FIFOQueue()
- self.queue.add(10.0, 100.0, "2025-04-14")
- self.queue.add(20.0, 200.0, "2025-04-15")
- self.queue.add(30.0, 300.0, "2025-04-16")
+ self.queue.add(Decimal(10.0), Decimal(100.0), "2025-04-14")
+ self.queue.add(Decimal(20.0), Decimal(200.0), "2025-04-15")
+ self.queue.add(Decimal(30.0), Decimal(300.0), "2025-04-16")
def test_add(self):
"""
@@ -48,8 +50,10 @@ class TestFIFOQueue(unittest.TestCase):
"""
trades = self.queue.remove_coins(25.0)
self.assertEqual(len(trades), 2) # Two trades should be returned
- self.assertEqual(trades[0].amount, 10.0) # The first trade should be fully consumed
- self.assertEqual(trades[1].amount, 15.0) # The second trade should be partially consumed
+ # The first trade should be fully consumed
+ self.assertEqual(trades[0].amount, 10.0)
+ # The second trade should be partially consumed
+ self.assertEqual(trades[1].amount, 15.0)
tq = self.queue.get_copy()
self.assertEqual(tq[0].amount, 5.0) # Remaining trade in queue should update
@@ -71,14 +75,16 @@ class TestFIFOQueue(unittest.TestCase):
"""
Test the remaining amount in the queue after adding trades.
"""
- self.assertEqual(self.queue.get_remaining_amount(), 60.0) # Total of all amounts: 10 + 20 + 30
+ # Total of all amounts: 10 + 20 + 30
+ self.assertEqual(self.queue.get_remaining_amount(), 60.0)
def test_get_remaining_amount_after_removal(self):
"""
Test the remaining amount after removing some assets.
"""
self.queue.remove_coins(15.0) # Remove 15 assets
- self.assertEqual(self.queue.get_remaining_amount(), 45.0) # Remaining: 60 - 15
+ # Remaining: 60 - 15
+ self.assertEqual(self.queue.get_remaining_amount(), 45.0)
def test_get_remaining_amount_empty_queue(self):
"""
@@ -108,14 +114,20 @@ class TestFIFOQueue(unittest.TestCase):
trades = self.queue.remove_coins(4.0) # Remove 4 COIN from the first trade
self.assertEqual(len(trades), 1) # Only one trade should be returned
- self.assertEqual(trades[0].price_per_coin, 10) # Coin-cost needs to stay constant
+ # Coin-cost needs to stay constant
+ self.assertEqual(trades[0].price_per_coin, 10)
self.assertEqual(trades[0].amount, 4.0) # Check the removed amount
- self.assertEqual(trades[0].total_cost, 40.0) # Total cost should be proportional: (100 * 5 / 10)
+ # Total cost should be proportional: (100 * 5 / 10)
+ self.assertEqual(trades[0].total_cost, 40.0)
tq = self.queue.get_copy()
- self.assertEqual(tq[0].price_per_coin, 10) # Original total cost remains unchanged
- self.assertEqual(tq[0].amount, 6.0) # Remaining amount in the first trade should be updated
- self.assertEqual(tq[0].total_cost, 60.0) # Original total cost remains unchanged
+ # Original total cost remains unchanged
+ self.assertEqual(tq[0].price_per_coin, 10)
+ # Remaining amount in the first trade should be updated
+ self.assertEqual(tq[0].amount, 6.0)
+ # Original total cost remains unchanged
+ self.assertEqual(tq[0].total_cost, 60.0)
+
if __name__ == "__main__":
unittest.main()