Java простые игровые тестовые ошибки - PullRequest
1 голос
/ 10 марта 2012

Я создаю простую шахматную настольную игру на языке Java, и они работают без сбоев, однако я получаю 2 ошибки во время тестирования, и я не понимаю их логики.

ошибка # 1: игрок 1 клонировал своего короля и доминировал, ожидая <8>, но это было <1>

ошибка № 2: символы следует рассматривать как пустые ячейки. ожидается <1>, но это было <0>

это мой код:

import java.io.ObjectInputStream.GetField;

public class ChessBoard {
    public static boolean belongsToPlayer(final char piece, final int player) { // method to check a piece is related to player 1 or 2
        if (player == 0 && Character.isUpperCase(piece)) {
            return true;
        }
        if (player == 1 && Character.isLowerCase(piece)) {
            return true;
        }
        return false;
    }

     public static int getCount(final String[] board, final int player) { // method to return the number of pieces belonging to each player
         int count = 0;

         if (board.length == 0) {
             return count = 0;
         }
         else if (board.length == 1) {
             return count = 1;
         }
         else {
        int size = board.length;
        for (int i = 1; i < size; i++) {        
            for (int j = 0; j < board[i].length(); j++) {

                if (belongsToPlayer(board[i].charAt(j), player)) {
                    count++;
                }
            }
        }
        }
        return count;
    }

}

and these are the test methods:
test #1
@Test(timeout = 1000)
    public void test8KingsPlayer1() {
        String[] board = {
                "kkkkkkkk"
            };
        assertEquals("Player 1 has cloned his king and has dominated", 
                8, instance.getCount(board, PLAYER1));
    }

test #2
@Test(timeout = 1000)
    public void testAPieceOfCode() {
        String[] board = {
                "int factorIal(int n) {",
                "    int n = 8, r = 1; ",
                "    while (n-- > 1)   ",
                "        r *= n;       ",
                "    return r;         ",
                "}                     "
            };
        assertEquals("Symbols should be treated as empty cells.", 
                1, instance.getCount(board, PLAYER0));
    }

Кто-нибудь знает, как решить проблему?

1 Ответ

2 голосов
/ 10 марта 2012

Ошибка 1:

else if (board.length == 1) {
    return count = 1;
}

Он сразу возвращает 1, поскольку вы передали ему строку [] с 1 элементом.

Ошибка 2:

for (int i = 1; i < size; i++) {
    ...
        if (belongsToPlayer(board[i] ...

Индексирование массива начинается с 0. Вы начали с 1, который пропускает первую строку в массиве.Поскольку столица была у меня в первом ряду, она не была засчитана.

...