def test_enqueue(self): priority_queue = DuplicatePriorityQueue(float, False) with self.assertRaises(PriorityQueueTypeError): priority_queue.enqueue(5, 5) with self.assertRaises(PriorityQueueTypeError): priority_queue.enqueue(5.25, "5") d = {5: 10.5, 1: 2.7, 3: 4.90, 11: 3.14} for key in d: priority_queue.enqueue(d[key], key) self.assertEqual(len(priority_queue), len(d)) for priority in d: self.assertFalse(priority_queue.get_element(priority) is None) self.assertEqual(d[priority], priority_queue.get_element(priority)) priority_queue.enqueue(3.14, 11) priority_queue.enqueue(5.5, 3) self.assertEqual(priority_queue.dequeue(), 3.14, "Wrong enqueue implementation") self.assertEqual(priority_queue.dequeue(), 3.14, "Wrong enqueue implementation") self.assertEqual(len(priority_queue), len(d), "Wrong enqueue implementation") self.assertTrue(priority_queue.contains_element(5.5), "Wrong enqueue implementation") self.assertTrue(priority_queue.contains_element(4.90), "Wrong enqueue implementation")
def test_remove(self): priority_queue = DuplicatePriorityQueue() with self.assertRaises(PriorityQueueElementError): priority_queue.remove_element(5) priority_queue.enqueue("word", 1) priority_queue.enqueue(1, 5) priority_queue.enqueue(3.14, 10) priority_queue.remove_element(3.14) self.assertFalse(priority_queue.contains_element(3.14), "Wrong remove implementation") self.assertEqual(priority_queue.peek(), 1, "Wrong remove implementation") with self.assertRaises(PriorityQueueElementError): priority_queue.remove_element(3.14) self.assertEqual(priority_queue.size, 2, "Wrong remove implementation") priority_queue = DuplicatePriorityQueue(int, reverse=True) with self.assertRaises(PriorityQueueTypeError): priority_queue.remove_element(5.5) for i in range(10): priority_queue.enqueue(i, i**2) priority_queue.enqueue(i + 100, i**2) self.assertEqual(len(priority_queue), 20) self.assertTrue(priority_queue.contains_element(5)) priority_queue.remove_element(5) self.assertEqual(len(priority_queue), 19, "Wrong remove implementation") self.assertFalse(priority_queue.contains_element(5), "Wrong remove implementation") priority_queue.remove_element(0) self.assertEqual(priority_queue.dequeue(), 100, "Wrong remove implementation") self.assertTrue(priority_queue.contains_priority(9)) self.assertTrue(3 in priority_queue) self.assertTrue(103 in priority_queue) priority_queue.remove_element(3) self.assertTrue(priority_queue.contains_priority(9)) self.assertFalse(3 in priority_queue) self.assertTrue(103 in priority_queue) self.assertEqual(priority_queue.get_element(9), 103, "Wrong remove implementation") priority_queue.remove_element(103) self.assertFalse(priority_queue.contains_priority(9), "Wrong remove implementation") self.assertEqual(len(priority_queue), 15, "Wrong remove implementation") self.assertEqual(priority_queue.dequeue(), 1) priority_queue.remove_element(101) self.assertEqual(priority_queue.get_element(1), None, "Wrong remove implementation") self.assertEqual(len(priority_queue), 13)
def test_get_element(self): priority_queue = DuplicatePriorityQueue() for k in range(10): self.assertTrue( priority_queue.get_element(k) is None, "Wrong get implementation") priority_queue.enqueue(k * 3, k) priority_queue.enqueue(k**3, k) for n in range(9, -1, -1): self.assertEqual(priority_queue.get_element(n), n * 3, "Wrong peek implementation") self.assertTrue(priority_queue.contains_element(n**3)) self.assertEqual(len(priority_queue), 20)
def test_contains(self): priority_queue = DuplicatePriorityQueue() self.assertFalse(priority_queue.contains_priority(5), "Contains fails with empty queue") with self.assertRaises(PriorityQueueTypeError): priority_queue.contains_priority("7") self.assertFalse(priority_queue.contains_element("7"), "Contains_element fails") priority_queue = DuplicatePriorityQueue(int, True) for i in range(10): priority_queue.enqueue(i**2, i) for j in range(10): self.assertTrue(priority_queue.contains_priority(j), "Wrong contains implementation") self.assertTrue(priority_queue.contains_element(j**2), "Contains_element fails") self.assertTrue(j**2 in priority_queue, "Contains_element fails") with self.assertRaises(PriorityQueueTypeError): priority_queue.contains_element("word") priority_queue.enqueue(1000, 0) priority_queue.enqueue(25, 1) self.assertTrue(priority_queue.contains_priority(0), "Wrong contains implementation") self.assertTrue(priority_queue.contains_element(1000), "Contains_element fails") self.assertTrue(priority_queue.contains_element(0), "Contains_element fails") self.assertTrue(priority_queue.contains_element(25), "Contains_element fails") self.assertTrue(priority_queue.contains_element(1), "Contains_element fails")