package edu.whs.spin2018.baoapp;

import org.junit.Test;

import edu.whs.spin2018.baoapp.model.spiel.BaoSpiel;
import edu.whs.spin2018.baoapp.model.spiel.Mulde;
import edu.whs.spin2018.baoapp.model.spiel.Position;
import edu.whs.spin2018.baoapp.model.spiel.spieler.ComputerSpielerEinfach;

import static org.junit.Assert.*;

/**
 * Example local unit test, which will execute on the development machine (host).
 *
 * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
 */

public class ComputerSpielerEinfachTest {

    private final int ZEILEN = 4;
    private final int SPALTEN = 8;

    @Test
    public void generiereStartmuldeTest() {
        int[][] startWerte = {{2,2,3,2,2,2,2,2},{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
        Mulde[][] startMulden = new Mulde[ZEILEN][SPALTEN];
        for(int zeile = 0; zeile < ZEILEN; zeile++) {
            for(int spalte = 0; spalte < SPALTEN; spalte++) {
                startMulden[zeile][spalte] = new Mulde(new Position(zeile,spalte),startWerte[zeile][spalte]);
            }
        }
        BaoSpiel baoSpiel = new BaoSpiel(startMulden);
        ComputerSpielerEinfach cpu = new ComputerSpielerEinfach("Test");
        cpu.setzeBaoSpiel(baoSpiel);
        Position ergebnis = new Position(0,2);
        assertEquals(ergebnis,cpu.generiereStartmulde());
    }

    @Test
    public void generiereStartmuldeTest1() {
        int[][] startWerte = {{2,2,3,2,2,3,2,2},{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
        Mulde[][] startMulden = new Mulde[ZEILEN][SPALTEN];
        for(int zeile = 0; zeile < ZEILEN; zeile++) {
            for(int spalte = 0; spalte < SPALTEN; spalte++) {
                startMulden[zeile][spalte] = new Mulde(new Position(zeile,spalte),startWerte[zeile][spalte]);
            }
        }
        BaoSpiel baoSpiel = new BaoSpiel(startMulden);
        ComputerSpielerEinfach cpu = new ComputerSpielerEinfach("Test");
        cpu.setzeBaoSpiel(baoSpiel);
        Position ergebnis = new Position(0,2);
        assertEquals(ergebnis,cpu.generiereStartmulde());
    }

    @Test
    public void generiereStartmuldeTest2() {
        int[][] startWerte = {{2,2,3,2,2,3,2,2},{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
        Mulde[][] startMulden = new Mulde[ZEILEN][SPALTEN];
        for(int zeile = 0; zeile < ZEILEN; zeile++) {
            for(int spalte = 0; spalte < SPALTEN; spalte++) {
                startMulden[zeile][spalte] = new Mulde(new Position(zeile,spalte),startWerte[zeile][spalte]);
            }
        }
        BaoSpiel baoSpiel = new BaoSpiel(startMulden);
        ComputerSpielerEinfach cpu = new ComputerSpielerEinfach("Test");
        cpu.setzeBaoSpiel(baoSpiel);
        Position ergebnis = new Position(0,2);
        assertEquals(ergebnis,cpu.generiereStartmulde());
    }

    @Test
    public void generiereStartmuldeTest3() {
        int[][] startWerte = {{2,2,3,2,2,3,2,2},{2,2,2,2,5,2,2,2},{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
        Mulde[][] startMulden = new Mulde[ZEILEN][SPALTEN];
        for(int zeile = 0; zeile < ZEILEN; zeile++) {
            for(int spalte = 0; spalte < SPALTEN; spalte++) {
                startMulden[zeile][spalte] = new Mulde(new Position(zeile,spalte),startWerte[zeile][spalte]);
            }
        }
        BaoSpiel baoSpiel = new BaoSpiel(startMulden);
        ComputerSpielerEinfach cpu = new ComputerSpielerEinfach("Test");
        cpu.setzeBaoSpiel(baoSpiel);
        Position ergebnis = new Position(1,4);
        assertEquals(ergebnis,cpu.generiereStartmulde());
    }
}
