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)
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")
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")
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)
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 []