#!/bin/bash

MAVKA="$1"

if [ -z "$MAVKA" ]; then
  echo "Usage: $0 <path_to_mavka_executable>"
  exit 1
fi

# Визначення кольорів
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m' # No Color

run_test() {
  test_file="$1"

  # Виводимо назву тесту без переносу рядка
  echo -n "$test_file: "

  # Запускаємо тест і захоплюємо як стандартний вивід (stdout), так і помилки (stderr)
  output=$($MAVKA "$test_file" 2>&1)
  status=$?

  if [ $status -eq 0 ]; then
    echo -e "${GREEN}УСПІХ${NC}"
  else
    echo -e "${RED}НЕВДАЧА${NC}"
    # Виводимо збережений текст помилки з невеликим відступом
    echo -e "-------------------------"
    echo "$output"
    echo -e "-------------------------\n"
  fi
}

run_test тестування/Число/більше_цілого.м
run_test тестування/Число/віднімання_цілого.м
run_test тестування/Число/двійкове_або_цілого.м
run_test тестування/Число/двійкове_вабо_цілого.м
run_test тестування/Число/двійкове_і_цілого.м
run_test тестування/Число/двійкове_не_цілого.м
run_test тестування/Число/ділення_цілого.м
run_test тестування/Число/додавання_цілого.м
run_test тестування/Число/змінити_знак_цілого.м
run_test тестування/Число/зсув_вліво_цілого.м
run_test тестування/Число/зсув_вправо_цілого.м
run_test тестування/Число/менше_цілого.м
run_test тестування/Число/множення_цілого.м
run_test тестування/Число/не_більше_цілого.м
run_test тестування/Число/не_менше_цілого.м
run_test тестування/Число/остача_цілого.м
run_test тестування/Число/степінь_цілого.м
run_test тестування/Число/більше_рухомого.м
run_test тестування/Число/віднімання_рухомого.м
run_test тестування/Число/ділення_рухомого.м
run_test тестування/Число/додавання_рухомого.м
run_test тестування/Число/змінити_знак_рухомого.м
run_test тестування/Число/менше_рухомого.м
run_test тестування/Число/множення_рухомого.м
run_test тестування/Число/не_більше_рухомого.м
run_test тестування/Число/не_менше_рухомого.м
run_test тестування/Число/остача_рухомого.м
run_test тестування/Число/степінь_рухомого.м

echo ""
run_test тестування/Дані/Дані.м
run_test тестування/Дані/виділити.м
run_test тестування/Дані/обнулено.м
run_test тестування/Дані/з_тексту.м
run_test тестування/Дані/з_послідовності.м
run_test тестування/Дані/зі_списку.м
run_test тестування/Дані/з_даних.м
run_test тестування/Дані/чародія_перебір.м

echo ""
run_test тестування/Послідовність/Послідовність.м
run_test тестування/Послідовність/з_тексту.м
run_test тестування/Послідовність/з_послідовності.м
run_test тестування/Послідовність/зі_списку.м
run_test тестування/Послідовність/з_даних.м
run_test тестування/Послідовність/чародія_перебір.м

echo ""
run_test тестування/Список/Список.м
run_test тестування/Список/з_тексту.м
run_test тестування/Список/з_послідовності.м
run_test тестування/Список/зі_списку.м
run_test тестування/Список/з_даних.м
run_test тестування/Список/чародія_перебір.м
run_test тестування/Список/додати.м
run_test тестування/Список/забрати.м
run_test тестування/Список/позиція.м
run_test тестування/Список/знайти.м
run_test тестування/Список/знайти_позицію.м
run_test тестування/Список/відібрати.м
run_test тестування/Список/перетворити.м
run_test тестування/Список/обернути.м
run_test тестування/Список/містить.м
run_test тестування/Список/змінити_елемент.м

echo ""
run_test тестування/ПроміжокЧисел/ПроміжокЧисел.м

echo ""
run_test тестування/Текст/Текст.м

echo ""
run_test тестування/Словник/Словник.м

echo ""
run_test тестування/Дія/Дія.м
run_test тестування/Дія/назва.м
run_test тестування/Дія/створити_вручну.м
run_test тестування/Дія/позиційні.м
run_test тестування/Дія/іменовані.м
run_test тестування/Дія/позиційні_іменовані.м
run_test тестування/Дія/значення_за_замовчуванням.м

echo ""
run_test тестування/Клас/Клас.м
run_test тестування/Клас/назва.м
run_test тестування/Клас/створити_вручну.м
run_test тестування/Клас/лише_ознаки.м
run_test тестування/Клас/чародія.м
run_test тестування/Клас/ознаки_і_чародія.м
run_test тестування/Клас/метод.м
run_test тестування/Клас/метод1.м

echo ""
run_test тестування/Код/Код.м
run_test тестування/Код/створити_вручну.м

echo ""
run_test тестування/Модуль/Модуль.м
run_test тестування/Модуль/отримати_назву.м
run_test тестування/Модуль/створити_вручну.м
run_test тестування/Модуль/дати1.м

echo ""
run_test тестування/Параметр/Параметр.м
run_test тестування/Параметр/створити_вручну.м

echo ""
run_test тестування/Ознака/Ознака.м
run_test тестування/Ознака/створити_вручну.м

echo ""
run_test тестування/ПеребірДаних/ПеребірДаних.м
run_test тестування/ПеребірДаних/створити_вручну.м

echo ""
run_test тестування/ПеребірПослідовності/ПеребірПослідовності.м
run_test тестування/ПеребірПослідовності/створити_вручну.м

echo ""
run_test тестування/ПеребірПроміжкаЧисел/ПеребірПроміжкаЧисел.м
run_test тестування/ПеребірПроміжкаЧисел/створити_вручну.м

echo ""
run_test тестування/ПеребірСловника/ПеребірСловника.м
run_test тестування/ПеребірСловника/створити_вручну.м

echo ""
run_test тестування/ПеребірСписку/ПеребірСписку.м
run_test тестування/ПеребірСписку/створити_вручну.м

echo ""
run_test тестування/ПеребірТексту/ПеребірТексту.м
run_test тестування/ПеребірТексту/створити_вручну.м

echo ""
run_test тестування/біб/система/записати_прочитати.м