2026-rff_mp/pogodinda/lab2/tests/test_solver.py

58 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from src.maze_builder import TextFileMazeBuilder
from src.pathfinding import BFSStrategy, DFSStrategy, AStarStrategy, DijkstraStrategy
from src.maze_solver import MazeSolver
# Загружаем лабиринт
builder = TextFileMazeBuilder()
maze = builder.build_from_file("demo_maze.txt")
print("Лабиринт:")
print(maze)
print(f"\nСтарт: ({maze.start.x}, {maze.start.y})")
print(f"Выход: ({maze.exit.x}, {maze.exit.y})")
# Создаём solver без стратегии
solver = MazeSolver(maze)
# Тест 1: BFS
print(f"\n{'='*50}")
print("ТЕСТ 1: BFS")
solver.set_strategy(BFSStrategy())
stats = solver.solve("demo_maze")
print(f"Время: {stats.time_ms:.4f} мс")
print(f"Посещено: {stats.visited_cells}")
print(f"Длина пути: {stats.path_length}")
# Тест 2: DFS
print(f"\n{'='*50}")
print("ТЕСТ 2: DFS")
solver.set_strategy(DFSStrategy())
stats = solver.solve("demo_maze")
print(f"Время: {stats.time_ms:.4f} мс")
print(f"Посещено: {stats.visited_cells}")
print(f"Длина пути: {stats.path_length}")
# Тест 3: A*
print(f"\n{'='*50}")
print("ТЕСТ 3: A*")
solver.set_strategy(AStarStrategy())
stats = solver.solve("demo_maze")
print(f"Время: {stats.time_ms:.4f} мс")
print(f"Посещено: {stats.visited_cells}")
print(f"Длина пути: {stats.path_length}")
# Тест 4: Дейкстра
print(f"\n{'='*50}")
print("ТЕСТ 4: Дейкстра")
solver.set_strategy(DijkstraStrategy())
stats = solver.solve("demo_maze")
print(f"Время: {stats.time_ms:.4f} мс")
print(f"Посещено: {stats.visited_cells}")
print(f"Длина пути: {stats.path_length}")
# Тест 5: Динамическая смена алгоритма
print(f"\n{'='*50}")
print("ТЕСТ 5: Смена алгоритма на лету")
print("Было:", solver.strategy.get_name())
solver.set_strategy(BFSStrategy())
print("Стало:", solver.strategy.get_name())