import sys
import os

# Добавляем текущую директорию в путь поиска
sys.path.insert(0, os.path.dirname(__file__))

from models import Cell, Maze
from builders import TextFileMazeBuilder

def test_builder():
    print("ТЕСТИРОВАНИЕ BUILDER")

    # Создаем строителя
    builder = TextFileMazeBuilder()
    
    # Загружаем простой лабиринт
    print("\n1. Загрузка простого лабиринта (simple_maze.txt):")
    try:
        maze = builder.build_from_file("mazes/simple_maze.txt")
        print(f"   Размер: {maze.width}x{maze.height}")
        print(f"   Старт: {maze.start}")
        print(f"   Выход: {maze.exit}")
        
        # Визуализация
        print("\n   Карта лабиринта:")
        for y in range(maze.height):
            line = ""
            for x in range(maze.width):
                cell = maze.get_cell(x, y)
                if cell.is_wall:
                    line += "#"
                elif cell.is_start:
                    line += "S"
                elif cell.is_exit:
                    line += "E"
                else:
                    line += " "
            print(f"   {line}")
        
        print(" Лабиринт загружен успешно!")
    except Exception as e:
        print(f" Ошибка: {e}")
    
    # Загружаем сложный лабиринт
    print("\n2. Загрузка сложного лабиринта (small_maze.txt):")
    try:
        maze = builder.build_from_file("mazes/small_maze.txt")
        print(f"   Размер: {maze.width}x{maze.height}")
        print(f"   Старт: {maze.start}")
        print(f"   Выход: {maze.exit}")
        
        # Визуализация
        print("\n   Карта лабиринта:")
        for y in range(maze.height):
            line = ""
            for x in range(maze.width):
                cell = maze.get_cell(x, y)
                if cell.is_wall:
                    line += "#"
                elif cell.is_start:
                    line += "S"
                elif cell.is_exit:
                    line += "E"
                else:
                    line += " "
            print(f"   {line}")
        
        # Проверка соседей
        print(f"\n   Проверка соседей старта:")
        neighbors = maze.get_neighbors(maze.start)
        for n in neighbors:
            print(f"     - Сосед: ({n.x}, {n.y})")
        
        print(" Сложный лабиринт загружен успешно!")
    except Exception as e:
        print(f" Ошибка: {e}")

    print("ТЕСТИРОВАНИЕ ЗАВЕРШЕНО")

if __name__ == "__main__":
    test_builder()