#ifdef TEST
#include "unity.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#include "Spieler.h"
#include "Schachbrett.h"
#include "Laeufer.h"
#include "Spielstatus.h"

void test_Laeufer_white_diagonal_Bewegung(void) {
    char** brett = Schachbrett_erstellen();
    Player player = PLAYER_WHITE;
    // Prüfen, ob der Zug eine Diagonale ist == true
    assert(istzugerlaubt_Laeufer(brett, 1, 1, 3, 3, player) == true);
    // Prüfen ob der Zug keine Diagonale ist == false
    assert(istzugerlaubt_Laeufer(brett, 1, 1, 3, 2, player) == false);
     for (int i = 0; i < 8; i++) {
        free(brett[i]);
    }
    free(brett);

    
}

void test_Laeufer_black_diagonal_Bewegung(void) {
    char** brett = Schachbrett_erstellen();
    Player player = PLAYER_BLACK;
    // Prüfen, ob der Zug eine Diagonale ist == true
    assert(istzugerlaubt_Laeufer(brett, 6, 6, 3, 3, player) == true);
    // Prüfen ob der Zug keine Diagonale ist == false
    assert(istzugerlaubt_Laeufer(brett, 6, 6, 3, 2, player) == false);
     for (int i = 0; i < 8; i++) {
        free(brett[i]);
    }
    free(brett);

    
}

void test_Laeufer_input_imFeld(void){
    char** brett = Schachbrett_erstellen();
    Player player = PLAYER_WHITE;
    // Prüfen, ob  Zug außerhalb des Bretts liegt
    // nicht erlaubte Eingabe
    assert(istzugerlaubt_Laeufer(brett, 1, 1, 8, 8, player) == false);
    assert(istzugerlaubt_Laeufer(brett, -1, -1, 7, 7, player) == false);
    // erlaubte Eingabe
    assert(istzugerlaubt_Laeufer(brett, 2, 2, 5, 5, player) == true);
    assert(istzugerlaubt_Laeufer(brett, 4, 4, 2, 2, player) == true);
    for (int i = 0; i < 8; i++) {
        free(brett[i]);
    }
    free(brett);

}

void test_Laeufer_Weg_frei(void){
    char** brett = Schachbrett_erstellen();
    Player player = PLAYER_WHITE;
    brett[2][2] = 'P'; 
    assert(istzugerlaubt_Laeufer(brett, 1, 1, 3, 3, player)==false);
    assert(istzugerlaubt_Laeufer(brett, 3, 3, 6, 6, player)==true);
    for (int i = 0; i < 8; i++) {
        free(brett[i]);
    }
    free(brett);

}






#endif // TEST