186 lines
No EOL
6.6 KiB
C
186 lines
No EOL
6.6 KiB
C
/*----------------------------------------------------------
|
|
* HTBLA-Leonding / Klasse: n/a
|
|
* ---------------------------------------------------------
|
|
* Exercise Number: B1
|
|
* Title: Implementation of UTs for Mine Sweeper Board
|
|
* Author: S. Schraml
|
|
* ----------------------------------------------------------
|
|
* Description:
|
|
* Test functions for ADT MsBoard.
|
|
* ----------------------------------------------------------
|
|
*/
|
|
|
|
#include "test_ms_board.h"
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include "shortcut.h"
|
|
#include "config.h"
|
|
|
|
#include "ms_board.h"
|
|
#include "ms_cell.h"
|
|
|
|
TEST(test_msb_get_board__shall_provide_non_null_board) {
|
|
MsBoard board = msb_get_board();
|
|
ASSERT_TRUE(board != 0, MSG("Expected non-null board"));
|
|
}
|
|
|
|
TEST(test_msb_get_board__shall_provide_identical_board_instance) {
|
|
MsBoard board1 = msb_get_board();
|
|
MsBoard board2 = msb_get_board();
|
|
ASSERT_TRUE(board1 == board2, MSG("Expected the same board on subsequent calls"));
|
|
}
|
|
|
|
TEST(test_msb_init_board__shall_provide_valid_board) {
|
|
Count cols = 3;
|
|
Count rows = 2;
|
|
MsBoard board = msb_get_board();
|
|
|
|
msb_init_board(board, cols, rows);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
|
|
msb_init_board(board, MAX_BOARD_SIZE, MAX_BOARD_SIZE);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
}
|
|
|
|
TEST(test_msb_init_board__shall_provide_invalid_board__for_zero_cols) {
|
|
MsBoard board = msb_get_board();
|
|
msb_init_board(board, 0, 1);
|
|
ASSERT_FALSE(msb_is_valid(board), MSG("Expected invalid board"));
|
|
}
|
|
|
|
TEST(test_msb_init_board__shall_provide_invalid_board__for_zero_rows) {
|
|
MsBoard board = msb_get_board();
|
|
msb_init_board(board, 1, 0);
|
|
ASSERT_FALSE(msb_is_valid(board), MSG("Expected invalid board"));
|
|
}
|
|
|
|
TEST(test_msb_init_board__shall_provide_valid_board__for_too_many_cols) {
|
|
MsBoard board = msb_get_board();
|
|
msb_init_board(board, MAX_BOARD_SIZE + 1, 1);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
Count cnt = msb_get_column_count(board);
|
|
ASSERT_TRUE(cnt == MAX_BOARD_SIZE, MSG("Expected column count clipped to %d but was", MAX_BOARD_SIZE, cnt));
|
|
}
|
|
|
|
TEST(test_msb_init_board__shall_provide_valid_board__for_too_many_rows) {
|
|
MsBoard board = msb_get_board();
|
|
msb_init_board(board, 1, MAX_BOARD_SIZE + 1);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
Count cnt = msb_get_row_count(board);
|
|
ASSERT_TRUE(cnt == MAX_BOARD_SIZE, MSG("Expected row count clipped to %d but was", MAX_BOARD_SIZE, cnt));
|
|
}
|
|
|
|
TEST(test_msb_init_board__shall_provide_valid_covered_empty_cells) {
|
|
Count cols = 3;
|
|
Count rows = 2;
|
|
MsBoard board = msb_get_board();
|
|
|
|
msb_init_board(board, cols, rows);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
|
|
for (int row = 0; row < rows; row++) {
|
|
for (int col = 0; col < cols; col++) {
|
|
MsCell cell = msb_get_cell(board, col, row);
|
|
ASSERT_TRUE(msc_is_valid(cell), MSG("Expected valid cell at %d/%d", col, row));
|
|
ASSERT_TRUE(msc_is_covered(cell), MSG("Expected covered cell at %d/%d", col, row));
|
|
ASSERT_TRUE(msc_get_dangerous_neighbor_count(cell) == 0, MSG("Expected empty cell at %d/%d", col, row));
|
|
ASSERT_TRUE(msc_get_marker(cell) == NONE, MSG("Expected unmarked cell at %d/%d", col, row));
|
|
}
|
|
}
|
|
}
|
|
|
|
TEST(test_msb_is_valid__shall_be_true__for_valid_board) {
|
|
MsBoard board = msb_get_board();
|
|
msb_init_board(board, 1, 1);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
}
|
|
|
|
TEST(test_msb_is_valid__shall_be_false__for_null_board) {
|
|
ASSERT_FALSE(msb_is_valid(0), MSG("Expected valid board"));
|
|
}
|
|
|
|
TEST(test_msb_is_valid__shall_be_false__for_zero_dimensions) {
|
|
MsBoard board = msb_get_board();
|
|
msb_init_board(board, 0, 0);
|
|
ASSERT_FALSE(msb_is_valid(board), MSG("Expected invalid board"));
|
|
}
|
|
|
|
TEST(test_msb_get_cell__shall_provide_a_non_null_cell__for_idx_within_board_size) {
|
|
Count cols = 2;
|
|
Count rows = 3;
|
|
MsBoard board = msb_get_board();
|
|
|
|
msb_init_board(board, cols, rows);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
|
|
for (int row = 0; row < rows; row++) {
|
|
for (int col = 0; col < cols; col++) {
|
|
ASSERT_TRUE(msb_get_cell(board, col, row) != 0, MSG("Expected non-null cell at %d/%d", col, row));
|
|
}
|
|
}
|
|
}
|
|
|
|
TEST(test_msb_get_cell__shall_provide_a_null_cell__for_idx_outside_board_size) {
|
|
Count cols = 4;
|
|
Count rows = 2;
|
|
MsBoard board = msb_get_board();
|
|
|
|
msb_init_board(board, cols, rows);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
|
|
for (int row = rows; row < MAX_BOARD_SIZE + 1; row++) {
|
|
for (int col = cols; col < MAX_BOARD_SIZE + 1; col++) {
|
|
ASSERT_TRUE(msb_get_cell(board, col, row) == 0, MSG("Expected null cell at %d/%d", col, row));
|
|
}
|
|
}
|
|
}
|
|
|
|
TEST(test_msb_get_column_count__shall_be_configured_count__for_valid_board) {
|
|
Count exp_cols = 8;
|
|
Count exp_rows = 7;
|
|
MsBoard board = msb_get_board();
|
|
msb_init_board(board, exp_cols, exp_rows);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
|
|
Count act_cols = msb_get_column_count(board);
|
|
ASSERT_TRUE(act_cols == exp_cols, MSG("Expected column count of %d, but was %d", exp_cols, act_cols));
|
|
}
|
|
|
|
TEST(test_msb_get_column_count__shall_be_zero__for_invalid_board) {
|
|
Count act_cols = msb_get_column_count(0);
|
|
ASSERT_TRUE(act_cols == 0, MSG("Expected column count of 0 for invalid board, but was", act_cols));
|
|
|
|
Count exp_count = 9;
|
|
MsBoard board = msb_get_board();
|
|
|
|
msb_init_board(board, exp_count, 0);
|
|
ASSERT_FALSE(msb_is_valid(board), MSG("Expected invalid board"));
|
|
act_cols = msb_get_column_count(board);
|
|
ASSERT_TRUE(act_cols == 0, MSG("Expected column count of 0 for invalid board, but was", act_cols));
|
|
}
|
|
|
|
TEST(test_msb_get_row_count__shall_be_configured_count__for_valid_board) {
|
|
Count exp_cols = 6;
|
|
Count exp_rows = 9;
|
|
MsBoard board = msb_get_board();
|
|
msb_init_board(board, exp_cols, exp_rows);
|
|
ASSERT_TRUE(msb_is_valid(board), MSG("Expected valid board"));
|
|
|
|
Count act_rows = msb_get_row_count(board);
|
|
ASSERT_TRUE(act_rows == exp_rows, MSG("Expected row count of %d, but was %d", exp_rows, act_rows));
|
|
}
|
|
|
|
TEST(test_msb_get_row_count__shall_be_zero__for_invalid_board) {
|
|
Count act_rows = msb_get_column_count(0);
|
|
ASSERT_TRUE(act_rows == 0, MSG("Expected row count of 0 for invalid board, but was", act_rows));
|
|
|
|
Count exp_count = 7;
|
|
MsBoard board = msb_get_board();
|
|
|
|
msb_init_board(board, 0, exp_count);
|
|
ASSERT_FALSE(msb_is_valid(board), MSG("Expected invalid board"));
|
|
act_rows = msb_get_row_count(board);
|
|
ASSERT_TRUE(act_rows == 0, MSG("Expected row count of 0 for invalid board, but was", act_rows));
|
|
} |