package controller;
import controller.impl.Controller;
import controller.impl.GamefieldAdapter;
import model.impl.GamefieldGraph;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class ControllerTest {
Controller control;
@Before
public void setUp() {
control = new Controller(new GamefieldAdapter(new GamefieldGraph()));
}
@Test
public void testSetStone() {
assertEquals(true, control.setStone(1));
assertEquals(false, control.setStone(0));
assertEquals(false, control.setStone(26));
control.setNextPlayer();
assertEquals(true, control.setStone(3));
assertEquals(false, control.setStone(1));
}
@Test
public void testgetSettedStonesPlayer1() {
assertEquals(0, control.getSettedStonesPlayer1());
}
@Test
public void testgetSettedStonesPlayer2() {
control.setStone(3);
control.setStone(2);
assertEquals(1, control.getSettedStonesPlayer2());
}
@Test
public void testMoveStone() {
control.setStone(2);
assertFalse(control.moveStone(2));
assertFalse(control.moveStone(23));
control.setStone(5);
assertTrue(control.moveStone(2));
assertFalse(control.moveStone(2));
assertTrue(control.moveStone(3));
assertTrue(control.moveStone(5));
assertFalse(control.moveStone(2));
}
@Test
public void testRemoveStone() {
control.setStone(1);
assertEquals(true, control.removeStone(1));
assertEquals(false, control.removeStone(0));
assertEquals(false, control.removeStone(3));
control.setNextPlayer();
assertEquals(false, control.removeStone(1));
control.setStone(2);
control.setStone(3);
control.setStone(6);
control.setNextPlayer();
assertEquals(false, control.removeStone(2));
control.setNextPlayer();
assertEquals(false, control.removeStone(3));
assertEquals(true, control.removeStone(6));
}
@Test
public void testGetAnzClosedMills() {
control.setStone(1);
control.setStone(2);
control.setStone(3); //1Mill
control.setStone(6);
control.setStone(8); //0Mill
control.setStone(4);
control.setStone(5);
control.setStone(12);
control.setStone(20);
assertEquals(0, control.getAnzClosedMills(6));
assertEquals(0, control.getAnzClosedMills(8));
assertEquals(0, control.getAnzClosedMills(2));
assertEquals(0, control.getAnzClosedMills(3));
assertEquals(0, control.getAnzClosedMills(0));
assertEquals(0, control.getAnzClosedMills(29));
}
@Test
public void testrequireInitial() {
assertEquals(true, control.requireInitial());
control.setStone(1);
control.setStone(3);
control.setStone(5);
control.setStone(7);
control.setStone(9);
control.setStone(11);
control.setStone(13);
control.setStone(15);
control.setNextPlayer();
control.setStone(2);
control.setStone(4);
control.setStone(6);
control.setStone(8);
control.setStone(10);
control.setStone(12);
control.setStone(14);
control.setStone(16);
assertEquals(true, control.requireInitial());
control.setStone(19);
control.setNextPlayer();
control.setStone(18);
assertEquals(false, control.requireInitial());
}
@Test
public void testgetCurrentPlayerName() {
assertEquals("Player1", control.getCurrentPlayerName());
control.setNextPlayer();
assertEquals("Player2", control.getCurrentPlayerName());
control.setNextPlayer();
assertEquals("Player1", control.getCurrentPlayerName());
}
@Test
public void testgameEnded() {
assertEquals(false, control.gameEnded());
control.setStone(1);
control.setStone(2);
control.setStone(3);
control.setStone(4);
control.setStone(5);
control.setStone(6);
control.setStone(7);
control.setStone(8);
control.setStone(9);
control.setStone(10);
control.setStone(11);
control.setStone(12);
control.setStone(13);
control.setStone(14);
control.setStone(15);
control.setStone(16);
control.setStone(17);
control.setStone(19);
control.removeStone(2);
control.removeStone(4);
control.removeStone(6);
control.removeStone(8);
control.removeStone(10);
control.removeStone(12);
assertEquals(false, control.gameEnded());
control.removeStone(14);
assertEquals(true, control.gameEnded());
control = null;
control = new Controller(new GamefieldAdapter(new GamefieldGraph()));
control.setStone(1);
control.setStone(2);
control.setStone(3);
control.setStone(4);
control.setStone(5);
control.setStone(6);
control.setStone(7);
control.setStone(8);
control.setStone(9);
control.setStone(10);
control.setStone(11);
control.setStone(12);
control.setStone(13);
control.setStone(14);
control.setStone(15);
control.setStone(16);
control.setStone(17);
control.setStone(19);
control.setNextPlayer();
control.removeStone(1);
control.removeStone(3);
control.removeStone(5);
control.removeStone(7);
control.removeStone(9);
control.removeStone(11);
assertEquals(false, control.gameEnded());
control.removeStone(13);
assertEquals(true, control.gameEnded());
}
@Test
public void testgetWinningPlayer() {
assertEquals("", control.getWinningPlayer());
control.setStone(1);
control.setStone(3);
control.setStone(5);
control.setStone(7);
control.setStone(9);
control.setStone(11);
control.setStone(13);
control.setStone(15);
control.setStone(17);
control.setNextPlayer();
control.setStone(2);
control.setStone(4);
control.setStone(6);
control.setStone(8);
control.setStone(10);
control.setStone(12);
control.setStone(14);
control.setStone(16);
control.setStone(19);
control.removeStone(1);
control.removeStone(3);
control.removeStone(5);
control.removeStone(7);
control.removeStone(9);
control.removeStone(11);
control.removeStone(13);
control.gameEnded();
assertEquals("", control.getWinningPlayer());
control = null;
control = new Controller(new GamefieldAdapter(new GamefieldGraph()));
control.setStone(1);
control.setStone(3);
control.setStone(5);
control.setStone(7);
control.setStone(9);
control.setStone(11);
control.setStone(13);
control.setStone(15);
control.setStone(17);
control.setNextPlayer();
control.setStone(2);
control.setStone(4);
control.setStone(6);
control.setStone(8);
control.setStone(10);
control.setStone(12);
control.setStone(14);
control.setStone(16);
control.setStone(19);
control.setNextPlayer();
control.removeStone(2);
control.removeStone(4);
control.removeStone(6);
control.removeStone(8);
control.removeStone(10);
control.removeStone(12);
control.removeStone(14);
control.gameEnded();
assertEquals("", control.getWinningPlayer());
}
@Test
public void testmillDeleteStone() {
control.millDeleteStone(2);
control.setStone(2);
control.millDeleteStone(2);
}
@Test
public void testCurrentStonesToDelete() {
assertEquals(0, control.getCurrentStonesToDelete());
}
}