test_multiqueue.py
1 """Test cases for multiqueue""" 2 3 import unittest 4 from pybitmessage.network.multiqueue import MultiQueue 5 6 7 class TestMultiQueue(unittest.TestCase): 8 """Test cases for multiqueue""" 9 10 def test_queue_creation(self): 11 """Check if the queueCount matches the specified value""" 12 mqsize = 3 13 multiqueue = MultiQueue(count=mqsize) 14 self.assertEqual(multiqueue.queueCount, mqsize) 15 16 def test_empty_queue(self): 17 """Check for empty queue""" 18 multiqueue = MultiQueue(count=5) 19 self.assertEqual(multiqueue.totalSize(), 0) 20 21 def test_put_get_count(self): 22 """check if put & get count is equal""" 23 multiqueue = MultiQueue(count=5) 24 put_count = 6 25 for i in range(put_count): 26 multiqueue.put(i) 27 28 get_count = 0 29 while multiqueue.totalSize() != 0: 30 if multiqueue.qsize() > 0: 31 multiqueue.get() 32 get_count += 1 33 multiqueue.iterate() 34 35 self.assertEqual(get_count, put_count) 36 37 def test_put_and_get(self): 38 """Testing Put and Get""" 39 item = 400 40 multiqueue = MultiQueue(count=3) 41 multiqueue.put(item) 42 result = None 43 for _ in multiqueue.queues: 44 if multiqueue.qsize() > 0: 45 result = multiqueue.get() 46 break 47 multiqueue.iterate() 48 self.assertEqual(result, item) 49 50 def test_iteration(self): 51 """Check if the iteration wraps around correctly""" 52 mqsize = 3 53 iteroffset = 1 54 multiqueue = MultiQueue(count=mqsize) 55 for _ in range(mqsize + iteroffset): 56 multiqueue.iterate() 57 self.assertEqual(multiqueue.iter, iteroffset) 58 59 def test_total_size(self): 60 """Check if the total size matches the expected value""" 61 multiqueue = MultiQueue(count=3) 62 put_count = 5 63 for i in range(put_count): 64 multiqueue.put(i) 65 self.assertEqual(multiqueue.totalSize(), put_count)