From ecea606533550d8d53a65daa6eeef583788448f4 Mon Sep 17 00:00:00 2001 From: uvok Date: Thu, 17 Apr 2025 11:20:01 +0200 Subject: Enforce use of Decimal, formatting --- test_trade_queue.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'test_trade_queue.py') 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() -- cgit v1.2.3