Exemple #1
0
void winner_fixes_kurmas_failure(CuTest *tc) {
  int board[8][8];
  ct_initialize(8, 8, board);

  board[7][1] = 0;
  board[6][1] = 1;
  board[5][1] = 0;
  board[4][1] = 1;

  board[7][2] = 1;
  board[6][2] = 0;
  board[5][2] = 1;
  board[4][2] = 0;

  board[7][3] = 0;
  board[6][3] = 1;
  board[5][3] = 0;
  board[4][3] = 1;

  board[7][4] = 1;

  int answer = winner(8, 8, 4, board);
  CuAssertIntEquals_Msg(tc, "Player 1.", 1, answer);

}
Exemple #2
0
void vertical_column1(CuTest* tc)
{
  int num_rows = 7;
  int num_columns = 7;
  int array[num_rows][num_columns];
  int answer;
  ct_initialize(num_rows, num_columns, array);

  placeToken(0, 1, num_rows, num_columns, array);
  answer = winner(num_rows, num_columns, 4, array);
  CuAssertIntEquals_Msg(tc, "Single 0 in column 1", NO_WINNER_YET, answer);

  placeToken(0, 1, num_rows, num_columns, array);
  answer = winner(num_rows, num_columns, 4, array);
  CuAssertIntEquals_Msg(tc, "Two 0s in column 1", NO_WINNER_YET, answer);


  placeToken(0, 1, num_rows, num_columns, array);
  answer = winner(num_rows, num_columns, 4, array);
  CuAssertIntEquals_Msg(tc, "Three 0s in column 1", NO_WINNER_YET, answer);


  placeToken(0, 1, num_rows, num_columns, array);
  answer = winner(num_rows, num_columns, 4, array);
  CuAssertIntEquals_Msg(tc, "4 in a row, vertical", 0, answer);
}
Exemple #3
0
void checkRightDiagonal_returns_negative_one_if_no_winner(CuTest *tc) {
  int board[3][3];
  ct_initialize(3, 3, board);

  int answer = checkRightDiagonal(3, 3, board, 3);
  CuAssertIntEquals_Msg(tc, "No winner.", -1, answer);
}
Exemple #4
0
void horizontal_row0(CuTest* tc)
{
  int num_rows = 7;
  int num_columns = 7;
  int array[num_rows][num_columns];
  int answer;
  ct_initialize(num_rows, num_columns, array);

  placeToken(0, 0, num_rows, num_columns, array);
  answer = winner(num_rows, num_columns, 4, array);
  CuAssertIntEquals_Msg(tc, "Single 0 in column 0", NO_WINNER_YET, answer);

  placeToken(0, 1, num_rows, num_columns, array);
  answer = winner(num_rows, num_columns, 4, array);
  CuAssertIntEquals_Msg(tc, "0s in columns {0,1}", NO_WINNER_YET, answer);


  placeToken(0, 2, num_rows, num_columns, array);
  answer = winner(num_rows, num_columns, 4, array);
  CuAssertIntEquals_Msg(tc, "0s in columns {0,1, 2}", NO_WINNER_YET, answer);


  placeToken(0, 3, num_rows, num_columns, array);
  answer = winner(num_rows, num_columns, 4, array);
  CuAssertIntEquals_Msg(tc, "4 in a row, horizontal", 0, answer);
}
Exemple #5
0
void kurmas_test(CuTest *tc) {
  int num_rows = 8;
  int num_columns = 8;
  int array[num_rows][num_columns];
  int answer;
  ct_initialize(num_rows, num_columns, array);

  placeToken(0, 1, num_rows, num_columns, array);
  placeToken(1, 1, num_rows, num_columns, array);
  placeToken(0, 1, num_rows, num_columns, array);
  placeToken(1, 1, num_rows, num_columns, array);

  placeToken(1, 2, num_rows, num_columns, array);
  placeToken(0, 2, num_rows, num_columns, array);
  placeToken(1, 2, num_rows, num_columns, array);
  placeToken(0, 2, num_rows, num_columns, array);

  placeToken(0, 3, num_rows, num_columns, array);
  placeToken(1, 3, num_rows, num_columns, array);
  placeToken(0, 3, num_rows, num_columns, array);
  placeToken(1, 3, num_rows, num_columns, array);

  placeToken(1, 4, num_rows, num_columns, array);

  answer = winner(num_rows, num_columns, 4, array);

  CuAssertIntEquals_Msg(tc, "Player 1", 1, answer);
}
Exemple #6
0
void checkRows_returns_negative_one_if_no_winner(CuTest *tc) {
  int board[4][4];
  ct_initialize(4, 4, board);
  board[3][0] = 1;
  board[3][1] = -1;
  board[3][2] = 1;
  board[3][3] = 1;

  int answer = checkRows(4, 4, board, 4);
  CuAssertIntEquals_Msg(tc, "No winner", -1, answer);
}
Exemple #7
0
void checkRows_returns_winner_if_exists(CuTest *tc) {
  int board[4][4];
  ct_initialize(4, 4, board);
  board[3][0] = 1;
  board[3][1] = 1;
  board[3][2] = 1;
  board[3][3] = 1;

  int answer = checkRows(4, 4, board, 4);
  CuAssertIntEquals_Msg(tc, "Player 1.", 1, answer);
}
Exemple #8
0
void checkRightDiagonal_returns_winner_if_there_is_one(CuTest *tc) {
  int board[3][3];
  ct_initialize(3, 3, board);

  board[0][0] = 0;
  board[1][1] = 0;
  board[2][2] = 0;

  int answer = checkRightDiagonal(3, 3, board, 3);
  CuAssertIntEquals_Msg(tc, "Player 0.", 0, answer);
}
Exemple #9
0
void checkLeftDiagonal_can_find_winners_above_below_largest_diagonal(CuTest *tc) {
  int board[5][5];
  ct_initialize(5, 5, board);

  board[3][0] = 1;
  board[2][1] = 1;
  board[1][2] = 1;

  int answer = checkLeftDiagonal(5, 5, board, 3);
  CuAssertIntEquals_Msg(tc, "Player 0.", 1, answer);
}
Exemple #10
0
void checkRightDiagonal_can_find_winners_below_largest_diagonal(CuTest *tc) {
  int board[4][4];
  ct_initialize(4, 4, board);

  board[0][1] = 0;
  board[1][2] = 0;
  board[2][3] = 0;

  int answer = checkRightDiagonal(4, 4, board, 3);
  CuAssertIntEquals_Msg(tc, "Player 0.", 0, answer);
}
Exemple #11
0
void checkRightDiagonal_can_use_larger_boards(CuTest *tc) {
  int board[5][5];
  ct_initialize(5, 5, board);

  board[1][2] = 1;
  board[2][3] = 1;
  board[3][4] = 1;

  int answer = checkRightDiagonal(5, 5, board, 3);
  CuAssertIntEquals_Msg(tc, "Player 0.", 1, answer);
}
Exemple #12
0
void checkColumns_returns_negative_one_if_no_winner(CuTest *tc) {
  int board[4][4];
  ct_initialize(4, 4, board);

  board[0][1] = 1;
  board[1][1] = 1;
  board[2][1] = 0;
  board[3][1] = 1;

  int answer = winner(4, 4, 4, board);
  CuAssertIntEquals_Msg(tc, "No one wins", -1, answer);
}
void place_token_invalid_index(CuTest *tc) {
    int num_rows = 100;
    int num_columns = 100;
    int array[num_rows][num_columns];
    int answer = 0;

    ct_initialize(num_rows, num_columns, array);
    answer = place_token(1, 100, num_rows, num_columns, array);
    CuAssertIntEquals_Msg(tc, "Should return error, invalid index ", -1, answer);
    answer = place_token(1, -1, num_rows, num_columns, array);
    CuAssertIntEquals_Msg(tc, "Should return error, invalid index ", -1, answer);
}
Exemple #14
0
void checkColumns_does_not_recognize_negative_one_as_winner(CuTest *tc) {
  int board[4][4];
  ct_initialize(4, 4, board);

  board[0][1] = -1;
  board[1][1] = -1;
  board[2][1] = -1;
  board[3][1] = -1;

  int answer = winner(4, 4, 4, board);
  CuAssertIntEquals_Msg(tc, "No one wins", -1, answer);
}
Exemple #15
0
void winner_returns_left_diagonal_winner(CuTest *tc) {
  int board[3][3];
  ct_initialize(3, 3, board);

  board[2][0] = 1;
  board[1][1] = 1;
  board[0][2] = 1;

  int answer = winner(3, 3, 3, board);
  CuAssertIntEquals_Msg(tc, "Player 1.", 1, answer);

}
Exemple #16
0
void checkRightDiagonal_resets_count_properly(CuTest *tc) {
  int board[5][5];
  ct_initialize(5, 5, board);

  board[0][0] = 0;
  board[1][1] = 0;
  board[2][2] = 1;
  board[3][3] = 1;

  int answer = checkRightDiagonal(5, 5, board, 3);
  CuAssertIntEquals_Msg(tc, "No Winner.", -1, answer);
}
Exemple #17
0
void winner_returns_vertical_winner(CuTest *tc) {
  int board[4][4];
  ct_initialize(4, 4, board);

  board[0][2] = 1;
  board[1][2] = 1;
  board[2][2] = 1;
  board[3][2] = 1;

  int answer = winner(4, 4, 4, board);
  CuAssertIntEquals_Msg(tc, "Player 1.", 1, answer);
}
Exemple #18
0
void checkLeftDiagonal_properly_resets_count_top_loop(CuTest *tc) {
  int board[5][5];
  ct_initialize(5, 5, board);

  board[4][1] = 0;
  board[3][2] = 0;
  board[2][3] = 1;
  board[1][4] = 1;

  int answer = checkLeftDiagonal(5, 5, board, 3);
  CuAssertIntEquals_Msg(tc, "No winner.", -1, answer);

}
void winner_diagonal_r48(CuTest *tc) {

    int num_rows = 100;
    int num_columns = 100;
    int array[num_rows][num_columns];
    int answer;
    ct_initialize(num_rows, num_columns, array);
    for (int i = 48; i < 55; ++i) {
        array[i][i + 2] = 0;
    }
    answer = winner(num_rows, num_columns, 7, array);
    CuAssertIntEquals_Msg(tc, "Centered diagonal win", 0, answer);
}
Exemple #20
0
void checkColumns_properly_resets_count(CuTest *tc) {
  int board[5][5];
  ct_initialize(5, 5, board);

  board[0][1] = 1;
  board[1][1] = 1;
  board[2][1] = 0;
  board[3][1] = 1;
  board[4][1] = 1;

  int answer = winner(5, 5, 3, board);
  CuAssertIntEquals_Msg(tc, "No one wins", -1, answer);
}
Exemple #21
0
void placeToken_recognizes_already_placed_tokens(CuTest *tc) {
  int num_rows = 3;
  int num_columns = 3;
  int array[num_rows][num_columns];
  ct_initialize(num_rows, num_columns, array);

  placeToken(0, 2, num_rows, num_columns, array);
  placeToken(1, 2, num_rows, num_columns, array);

  CuAssertIntEquals_Msg(tc, "Drop 1 into empty column 3", 0, array[num_rows - 1][2]);
  CuAssertIntEquals_Msg(tc, "Drop 1 into empty column 3", 1, array[num_rows - 2][2]);

}
void check_full_board_pass(CuTest *tc) {
    int num_rows = 4;
    int num_columns = 4;
    int array[num_rows][num_columns];
    int answer = 0;
    ct_initialize(num_rows, num_columns, array);
    for (int row = num_rows - 1; row > -1; --row) {
        for (int col = 0; col < num_columns; ++col) {
            array[row][col] = 0; // A number which is not -1
        }
    }
    answer = check_full_board(num_rows, num_columns, array);
    CuAssertIntEquals_Msg(tc, "Board should be full", 4, answer);
}
Exemple #23
0
void placeToken_must_be_in_board(CuTest *tc) {
  int num_rows = 3;
  int num_columns = 3;
  int array[num_rows][num_columns];
  ct_initialize(num_rows, num_columns, array);

  placeToken(0, 3, num_rows, num_columns, array);
  placeToken(0, -1, num_rows, num_columns, array);

  CuAssertIntEquals_Msg(tc, "Must drop into board.", -1, array[num_rows - 1][0]);
  CuAssertIntEquals_Msg(tc, "Must drop into board.", -1, array[num_rows - 1][2]);


}
void check_full_board_fail(CuTest *tc) {
    int num_rows = 7;
    int num_columns = 7;
    int array[num_rows][num_columns];
    int answer = 0;
    ct_initialize(num_rows, num_columns, array);
    // Fill all but the "top" row
    for (int row = num_rows - 1; row > 0; --row) {
        for (int col = 0; col < num_columns; ++col) {
            array[row][col] = 0; // A number which is not -1
        }
    }
    array[0][3] = 1; // Fill one cell in "top" row
    answer = check_full_board(num_rows, num_columns, array);
    CuAssertIntEquals_Msg(tc, "Only one cell should be filled in top row", 1, answer);
}
/*******************************************************************************************
 *
 * Test winner function
 *
 * Note: This is just a sample of how you can test your own winner
 * function.  You may need to modify this code depending on how your
 * organized your array.  I will not be testing your winner function
 * directly.
 *
 * Note:  Be sure to add tests for different directions, quadrants, and board sizes.
 *
 ******************************************************************************************/
void winner_horizontal_r0(CuTest *tc) {

    int num_rows = 7;
    int num_columns = 7;
    int array[num_rows][num_columns];
    int answer;
    ct_initialize(num_rows, num_columns, array);

    array[0][0] = 0;
    array[0][1] = 0;
    array[0][2] = 0;
    array[0][3] = 0;

    answer = winner(num_rows, num_columns, 4, array);
    CuAssertIntEquals_Msg(tc, "0s in bottom row", 0, answer);
}
void loser_diagonal_r48(CuTest *tc) {
    /* Test counter to ensure that one "skip" in the win_count
     * doesn't let Player 1 win */
    int num_rows = 100;
    int num_columns = 100;
    int array[num_rows][num_columns];
    int answer;
    ct_initialize(num_rows, num_columns, array);
    for (int i = 48; i < 55; ++i) {
        array[i][i + 2] = 0;
    }
    // Win skip
    array[49][51] = 1;
    answer = winner(num_rows, num_columns, 7, array);
    CuAssertIntEquals_Msg(tc, "Centered diagonal loss", -1, answer);
}
Exemple #27
0
void fullBoard_notices_an_empty_board(CuTest *tc) {
  int board[3][3];
  ct_initialize(3, 3, board);

  board[0][1] = 0;
  board[0][2] = 0;
  board[1][0] = 0;
  board[1][1] = 0;
  board[1][2] = 0;
  board[2][0] = 0;
  board[2][1] = 0;
  board[2][2] = 0;

  int answer = fullBoard(3, 3, board);
  CuAssertIntEquals_Msg(tc, "Full board", -1, answer);
}
void place_token_c99(CuTest *tc) {

    int num_rows = 100;
    int num_columns = 100;
    int array[num_rows][num_columns];
    ct_initialize(num_rows, num_columns, array);

    place_token(1, 99, num_rows, num_columns, array);
    CuAssertIntEquals_Msg(tc, "Drop 1 into empty column 99", 1, array[num_rows - 1][99]);
    int r, c;
    for (r = 0; r < num_rows; r++) {
        for (c = 0; c < num_columns; c++) {
            if (r != (num_rows - 1) || c != 99) {
                CuAssertIntEquals_Msg(tc, "Should be empty", EMPTY, array[r][c]);
            }
        }
    }
}
Exemple #29
0
void placeToken_c1(CuTest *tc) {

  int num_rows = 7;
  int num_columns = 7;
  int array[num_rows][num_columns];
  ct_initialize(num_rows, num_columns, array);

  placeToken(1, 3, num_rows, num_columns, array);

  // make sure there is a 1 at the bottom of column 3 and a -1 everywhere else
  CuAssertIntEquals_Msg(tc, "Drop 1 into empty column 3", 1, array[num_rows - 1][3]);
  int r, c;
  for (r = 0; r < num_rows; r++) {
    for (c = 0; c < num_columns; c++) {
      if (r != (num_rows - 1) || c != 3) {
	CuAssertIntEquals_Msg(tc, "Should be empty", EMPTY, array[r][c]);
      }
    }
  }
}
void place_token_c5(CuTest *tc) {

    int num_rows = 7;
    int num_columns = 7;
    int array[num_rows][num_columns];
    ct_initialize(num_rows, num_columns, array);

    place_token(1, 5, num_rows, num_columns, array);
    // make sure there is a 1 at the bottom of column 5 and a -1 everywhere else
    CuAssertIntEquals_Msg(tc, "Drop 1 into empty column 5", 1, array[num_rows - 1][5]);
    place_token(1, 5, num_rows, num_columns, array);
    CuAssertIntEquals_Msg(tc, "Drop 1 into column 5 on 1 full", 1, array[num_rows - 2][5]);
    place_token(1, 5, num_rows, num_columns, array);
    CuAssertIntEquals_Msg(tc, "Drop 1 into column 5 on 2 full", 1, array[num_rows - 3][5]);
    int r, c;
    for (r = 0; r < num_rows; r++) {
        for (c = 0; c < num_columns; c++) {
            if (r < (num_rows - 3) || c != 5) {
                CuAssertIntEquals_Msg(tc, "Should be empty", EMPTY, array[r][c]);
            }
        }
    }
}