Esempio n. 1
0
    def test_queue_push(self):
        A = SearchNode("A")

        queue = SearchQueue()

        result = queue.push(A)

        self.assertTrue(result)
        self.assertEquals(len(queue), 1)

        queue.push(A)
        self.assertEquals(len(queue), 1)
Esempio n. 2
0
    def test_queue_pop(self):
        A = SearchNode("A")
        B = SearchNode("B")

        queue = SearchQueue()

        queue.push(A)
        queue.push(B)

        self.assertEquals(len(queue), 2)

        node = queue.pop()

        self.assertEquals(len(queue), 1)
        self.assertIsInstance(node, SearchNode)
        self.assertEquals(node.name, "A")
Esempio n. 3
0
    def test_placed_by(self):
        A = SearchNode("A")
        B = SearchNode("B")

        queue = SearchQueue()

        queue.push(A)
        queue.push(B, A)

        node = queue.pop()

        self.assertIsNone(queue.placed_by(node.name))

        node = queue.pop()

        self.assertEquals(queue.placed_by(node.name).name, "A")
Esempio n. 4
0
    def test_advanced_pushpop(self):
        A = SearchNode("A")

        queue = SearchQueue()

        result = queue.push(A)

        self.assertTrue(result)
        self.assertEquals(len(queue), 1)

        queue.push(A)
        self.assertEquals(len(queue), 1)

        queue.pop()
        queue.push(A)
        self.assertEquals(len(queue), 0)
Esempio n. 5
0
    def breadth(self, start: str, end: str) -> List[SearchNode]:
        """
        Breadth First Search
        :param start: Start node name
        :param end: End node name
        :return:
        """
        # Get start and end node
        start = self.__nodes[start]
        end = self.__nodes[end]

        # Create search queue
        queue = SearchQueue()

        # Do a basic search using a queue
        node = SearchAlgo.basic_search(queue, start, end)

        # Build path
        if node:
            # Find path from last node
            return queue.get_path(node)
        else:
            return []
Esempio n. 6
0
    def breadth(self, start: str, end: str) -> List[SearchNode]:
        """
        Breadth First Search
        :param start: Start node name
        :param end: End node name
        :return:
        """
        # Get start and end node
        start = self.__nodes[start]
        end = self.__nodes[end]

        # Create search queue
        queue = SearchQueue()

        # Do a basic search using a queue
        node = SearchAlgo.basic_search(queue, start, end)

        # Build path
        if node:
            # Find path from last node
            return queue.get_path(node)
        else:
            return []