obstructedFields = new ArrayList<>();
- for (int x = 0; x < Constants.BOARD_SIZE; x++) {
- for (int y = 0; y < Constants.BOARD_SIZE; y++) {
- if (state.getBoard().getField(x, y).isObstructed()) {
- if (count < Constants.NUM_OBSTACLES) {
+ for(int x = 0; x < Constants.BOARD_SIZE; x++) {
+ for(int y = 0; y < Constants.BOARD_SIZE; y++) {
+ if(state.getBoard().getField(x, y).isObstructed()) {
+ if(count < Constants.NUM_OBSTACLES) {
count++;
} else {
fail("More than two obstructed fields found");
@@ -200,7 +182,7 @@ public void testObstructedFieldGeneration() {
assertTrue(y > 1);
assertTrue(x < Constants.BOARD_SIZE - 2);
assertTrue(y < Constants.BOARD_SIZE - 2);
- for (Field field : obstructedFields) {
+ for(Field field : obstructedFields) {
// check whether second field is in same line (diagonal, vertical or horizontal as first one)
assertNotEquals(field.getX(), x); // horizontal
assertNotEquals(field.getY(), y); // vertical
@@ -234,7 +216,7 @@ public void testNoWinAfterPiranhaEaten() throws InvalidMoveException {
{
Move move = new Move(1, 8, Direction.LEFT);
move.perform(state);
- assertEquals(null, game.checkWinCondition());
+ assertEquals(null, game.checkWinCondition());
}
{
@@ -244,6 +226,6 @@ public void testNoWinAfterPiranhaEaten() throws InvalidMoveException {
}
assertEquals(5, GameRuleLogic.greatestSwarmSize(board, PlayerColor.BLUE));
assertEquals(8, GameRuleLogic.greatestSwarmSize(board, PlayerColor.RED));
- assertEquals(PlayerColor.BLUE, board.getField(2,2).getPiranha().get());
+ assertEquals(PlayerColor.BLUE, board.getField(2, 2).getPiranha().get());
}
}
diff --git a/plugin/src/test/sc/plugin2019/util/TestGameUtil.java b/plugin/src/test/sc/plugin2019/util/TestGameUtil.java
index 652743036..34d897278 100644
--- a/plugin/src/test/sc/plugin2019/util/TestGameUtil.java
+++ b/plugin/src/test/sc/plugin2019/util/TestGameUtil.java
@@ -1,23 +1,25 @@
package sc.plugin2019.util;
+import org.junit.Assert;
import sc.plugin2019.Board;
import sc.plugin2019.FieldState;
public class TestGameUtil {
public static Board createCustomBoard(String boardString) {
- if (boardString.length() != Constants.BOARD_SIZE * Constants.BOARD_SIZE) return null;
+ Assert.assertEquals("Length of boardString does not match size of the Board",
+ Constants.BOARD_SIZE * Constants.BOARD_SIZE, boardString.length());
Board board = new Board();
- for (int i = 0; i < Constants.BOARD_SIZE; i++) {
- for (int j = 0; j < Constants.BOARD_SIZE; j++) {
+ for(int i = 0; i < Constants.BOARD_SIZE; i++) {
+ for(int j = 0; j < Constants.BOARD_SIZE; j++) {
int index = i + j * Constants.BOARD_SIZE;
char c = boardString.charAt(index);
- if (c == 'R') {
+ if(c == 'R') {
board.getField(i, j).setState(FieldState.RED);
- } else if (c == 'B') {
+ } else if(c == 'B') {
board.getField(i, j).setState(FieldState.BLUE);
- } else if (c == 'O') {
+ } else if(c == 'O') {
board.getField(i, j).setState(FieldState.OBSTRUCTED);
} else {
board.getField(i, j).setState(FieldState.EMPTY);
@@ -26,6 +28,6 @@ public static Board createCustomBoard(String boardString) {
}
return board;
}
-
+
}
diff --git a/server/test/sc/protocol/requests/RequestTest.kt b/server/test/sc/protocol/requests/RequestTest.kt
index 93830c8b7..84bd1ab2b 100644
--- a/server/test/sc/protocol/requests/RequestTest.kt
+++ b/server/test/sc/protocol/requests/RequestTest.kt
@@ -318,7 +318,7 @@ class RequestTest : RealServerTest() {
Assert.assertTrue(TestHelper.waitUntilTrue({ lobby.gameManager.games.isNotEmpty() }, 1000))
player1.send(CancelRequest(listener.roomid))
- Assert.assertTrue(TestHelper.waitUntilTrue({ lobby.gameManager.games.isEmpty() }, 1000))
+ Assert.assertTrue(TestHelper.waitUntilTrue({ lobby.gameManager.games.isEmpty() }, 3000))
Assert.assertEquals(0, lobby.gameManager.games.size.toLong())
}
@@ -359,8 +359,6 @@ class RequestTest : RealServerTest() {
TestHelper.waitMillis(2000)
room = gameMgr.games.iterator().next()
Assert.assertFalse(room.slots[0].role.player.isCanTimeout)
-
-
}
@Test
diff --git a/socha-sdk/src/framework/sc/shared/PlayerColor.java b/socha-sdk/src/framework/sc/shared/PlayerColor.java
deleted file mode 100644
index bc42cfac8..000000000
--- a/socha-sdk/src/framework/sc/shared/PlayerColor.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package sc.shared;
-
-public enum PlayerColor {
-
- RED, BLUE;
-
- /**
- * liefert die Spielerfarbe des Gegners dieses Spielers
- * @return Spielerfarbe des Gegners
- */
- public PlayerColor opponent() {
- return this == RED ? BLUE : RED;
- }
-
-}
diff --git a/socha-sdk/src/framework/sc/shared/PlayerColor.kt b/socha-sdk/src/framework/sc/shared/PlayerColor.kt
new file mode 100644
index 000000000..7e36bd88a
--- /dev/null
+++ b/socha-sdk/src/framework/sc/shared/PlayerColor.kt
@@ -0,0 +1,15 @@
+package sc.shared
+
+enum class PlayerColor {
+
+ RED, BLUE;
+
+ /**
+ * liefert die Spielerfarbe des Gegners dieses Spielers
+ * @return Spielerfarbe des Gegners
+ */
+ fun opponent(): PlayerColor = if(this == RED) BLUE else RED
+
+ fun asLetter(): String = if(this == RED) "R" else "B"
+
+}
diff --git a/socha-sdk/src/server-api/sc/api/plugins/IGameState.kt b/socha-sdk/src/server-api/sc/api/plugins/IGameState.kt
index f1d1b3e5f..706dc485d 100644
--- a/socha-sdk/src/server-api/sc/api/plugins/IGameState.kt
+++ b/socha-sdk/src/server-api/sc/api/plugins/IGameState.kt
@@ -25,7 +25,7 @@ import sc.protocol.responses.ProtocolMessage
*
* @author Niklas, Sören, Janek
*/
-interface IGameState : ProtocolMessage {
+interface IGameState : ProtocolMessage, Cloneable {
/** Aktuelle Zugzahl */
val turn: Int
diff --git a/socha-sdk/src/server-api/sc/api/plugins/TwoPlayerGameState.kt b/socha-sdk/src/server-api/sc/api/plugins/TwoPlayerGameState.kt
index 003359ec4..fe9d6341f 100644
--- a/socha-sdk/src/server-api/sc/api/plugins/TwoPlayerGameState.kt
+++ b/socha-sdk/src/server-api/sc/api/plugins/TwoPlayerGameState.kt
@@ -61,9 +61,6 @@ abstract class TwoPlayerGameState : IGameState {
abstract fun getPointsForPlayer(playerColor: PlayerColor): Int
override fun toString() =
- ("GameState{turn=" + turn + ",currentPlayer=" + currentPlayer + "}"
- + red + blue
- + board
- + lastMove)
+ "GameState(turn=$turn,currentPlayer=${currentPlayer.color})"
}
\ No newline at end of file
diff --git a/socha-sdk/src/server-api/sc/framework/plugins/Player.kt b/socha-sdk/src/server-api/sc/framework/plugins/Player.kt
index b96db5590..32f6b9b8c 100644
--- a/socha-sdk/src/server-api/sc/framework/plugins/Player.kt
+++ b/socha-sdk/src/server-api/sc/framework/plugins/Player.kt
@@ -74,6 +74,6 @@ open class Player(@XStreamAsAttribute var color: PlayerColor) : Cloneable {
logger.debug("Move requested from $this")
}
- override fun toString(): String = "%s Player - %s".format(color, displayName)
+ override fun toString(): String = "Player %s(%s)".format(color, displayName)
}