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 static org.junit.Assert.*;

public class BaoSpielTest {

    BaoSpiel baoSpiel;
    private static final int ZEILEN = 4;
    private static final int SPALTEN = 8;

    @Test
    public void macheSpielzugTest1() {

        int[][] startWerte = {{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,2,2,2}};
        int[][] ergebnisWerte = {{2,2,2,2,2,2,2,2},{2,2,0,2,2,2,2,0},{1,4,1,3,3,3,3,0},{0,3,3,0,3,3,3,3}};
        Mulde[][] ergebnisMulden = new Mulde[ZEILEN][SPALTEN];
        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]);
                ergebnisMulden[zeile][spalte] = new Mulde(new Position(zeile,spalte),ergebnisWerte[zeile][spalte]);
            }
        }
        baoSpiel = new BaoSpiel(startMulden);
        baoSpiel.macheSpielzug(new Position(2,0));

        assertArrayEquals(ergebnisMulden, baoSpiel.gibSpielbrett());
    }

    @Test
    public void macheSpielzugTest2() {
        int[][] ergebnisWerte = {{2,2,2,2,2,2,2,2},{2,2,0,2,2,2,2,0},{1,4,1,3,3,3,3,0},{0,3,3,0,3,3,3,3}};
        Mulde[][] ergebnisArray = new Mulde[ZEILEN][SPALTEN];
        for(int zeile = 0; zeile < ZEILEN; zeile++) {
            for(int spalte = 0; spalte < SPALTEN; spalte++) {
                ergebnisArray[zeile][spalte] = new Mulde(new Position(zeile,spalte),ergebnisWerte[zeile][spalte]);
            }
        }
        baoSpiel = new BaoSpiel(ergebnisArray);
        baoSpiel.macheSpielzug(new Position(2,7));

        assertArrayEquals(ergebnisArray, baoSpiel.gibSpielbrett());
    }

    @Test
    public void macheSpielzugTest3() {
        int[][] startWerte = {{0,0,0,0,0,0,2,2},{2,2,0,0,0,0,2,0},{1,4,1,3,3,3,3,0},{0,3,3,0,3,3,3,3}};
        int[][] ergebnisWerte = {{0,0,0,0,0,0,2,2},{2,2,0,0,1,1,0,0},{1,4,1,3,3,3,3,0},{0,3,3,0,3,3,3,3}};
        Mulde[][] ergebnisArray = new Mulde[ZEILEN][SPALTEN];
        Mulde[][] startArray = new Mulde[ZEILEN][SPALTEN];
        for(int zeile = 0; zeile < ZEILEN; zeile++) {
            for(int spalte = 0; spalte < SPALTEN; spalte++) {
                startArray[zeile][spalte] = new Mulde(new Position(zeile,spalte),startWerte[zeile][spalte]);
                ergebnisArray[zeile][spalte] = new Mulde(new Position(zeile,spalte),ergebnisWerte[zeile][spalte]);
            }
        }
        baoSpiel = new BaoSpiel(startArray);
        baoSpiel.macheSpielzug(new Position(1,6));

        assertArrayEquals(ergebnisArray, baoSpiel.gibSpielbrett());
    }


}
