コード例 #1
0
    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")
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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")