class Priority_Q_Min_Heap_Test_Iteration_With_Multiple_Entries( unittest.TestCase): def setUp(self): self._item_priority_entries = [] for letter in string.uppercase: #build letter, ord(letter) tuples self._item_priority_entries.append((letter, ord(letter))) self._priorityQ = PriorityQueue(reverse_priority=True) self._expected_item_priority_pairs = [] for letter in string.uppercase: self._expected_item_priority_pairs.append((letter, ord(letter))) def test_iteration_with_multiple_entries(self): for item, priority in self._item_priority_entries: self._priorityQ.add_item(item, priority) items_and_priorities_pairs_from_q = [] for item, priority in self._priorityQ: items_and_priorities_pairs_from_q.append((item, priority)) self.assertEqual( items_and_priorities_pairs_from_q, self._expected_item_priority_pairs, 'Iteration on priority Q did not yield expected (item, priority) list' ) def tearDown(self): self._priorityQ = None
class Priority_Q_Min_Heap_Test_Add_Get_Multiple_Entries(unittest.TestCase): def setUp(self): self._item_priority_entries = [] for letter in string.uppercase: #build letter, ord(letter) tuples self._item_priority_entries.append((letter, ord(letter))) self._priorityQ = PriorityQueue(reverse_priority=True) self._expected_order_of_items_from_get = [] for letter in string.uppercase: #build Z, Y, X, .....C, B , A because this is a max heap. self._expected_order_of_items_from_get.append(letter) def test_add_get_multiple_entries(self): for item, priority in self._item_priority_entries: self._priorityQ.add_item(item, priority) items_from_q = [] for i in range(len( self._item_priority_entries)): #get this many items from the Q items_from_q.append(self._priorityQ.get()) self.assertEqual(items_from_q, self._expected_order_of_items_from_get, 'Items from priority Q did not match expected list.') def tearDown(self): self._priorityQ = None
class Priority_Q_Min_Heap_Test_Q_Add(unittest.TestCase): def setUp(self): self._item = 'Some Item' self._priority = 2 self._priorityQ = PriorityQueue(reverse_priority=True) def test_priority_q_test_add_element(self): self._priorityQ.add_item(self._item, self._priority) self.assertEqual(len(self._priorityQ), 1, 'Priority Q length must be 1') def tearDown(self): self._priorityQ = None
class Priority_Q_Min_Heap_Test_Q_Add_And_Get_With_Single_Entry( unittest.TestCase): def setUp(self): self._item = 'Some Item' self._priority = 2 self._priorityQ = PriorityQueue(reverse_priority=True) def test_priority_q_test_add__and_get(self): self._priorityQ.add_item(self._item, self._priority) item = self._priorityQ.get() self.assertEqual(item, self._item, 'Get op on priority Q did not yield expected item') def tearDown(self): self._priorityQ = None
class Priority_Q_Min_Heap_Test_Q_Iter_With_Single_Entry(unittest.TestCase): def setUp(self): self._item = 'Some Item' self._priority = 2 self._priorityQ = PriorityQueue(reverse_priority=True) def test_priority_q_test_iter(self): self._priorityQ.add_item(item=self._item, priority=self._priority) expected_list_of_entries = [(self._item, self._priority)] list_of_q_entries = [] for item, priority in self._priorityQ: list_of_q_entries.append((item, priority)) self.assertEqual( list_of_q_entries, expected_list_of_entries, 'Priority Q iteration did not yield expected entries') def tearDown(self): self._priorityQ = None