131 lines
5.9 KiB
C
131 lines
5.9 KiB
C
/*----------------------------------------------------------
|
|
* HTBLA-Leonding
|
|
* ---------------------------------------------------------
|
|
* Exercise Number: B1
|
|
* Title: Test Driver for Mine Sweeper
|
|
* Author: S. Schraml
|
|
* Due Date: n/a
|
|
* ----------------------------------------------------------
|
|
* Description:
|
|
* Executes all unit tests of Mine Sweeper.
|
|
* ----------------------------------------------------------
|
|
*/
|
|
|
|
#include "shortcut.h"
|
|
#include "test_ms_cell.h"
|
|
#include "test_ms_board.h"
|
|
#include "test_ms_ui_utils.h"
|
|
#include "test_ms_game.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
/* CELLS ***********************************/
|
|
ADD_TEST(test_msc_produce_cell__shall_provide_non_null_cells__for_MAX_x_MAX);
|
|
ADD_TEST(test_msc_produce_cell__shall_provide_different_cells__for_subsequent_calls);
|
|
ADD_TEST(test_msc_produce_cell__shall_provide_null_cells__when_out_of_cells);
|
|
ADD_TEST(test_msc_reset_cell_factory__shall_allow_to_produce_the_all_cells_again);
|
|
|
|
ADD_TEST(test_msc_is_valid__shall_be_true__for_valid_cell);
|
|
ADD_TEST(test_msc_is_valid__shall_be_false__for_null_cell);
|
|
|
|
ADD_TEST(test_msc_has_mine__shall_be_false__for_initial_cell);
|
|
ADD_TEST(test_msc_has_mine__shall_be_false__for_invalid_cell);
|
|
ADD_TEST(test_msc_has_mine__shall_be_true__after_mine_is_dropped);
|
|
|
|
ADD_TEST(test_msc_get_dangerous_neighbor_count__shall_be_0__for_initial_cell);
|
|
ADD_TEST(test_msc_get_dangerous_neighbor_count__shall_be_255__for_invalid_cell);
|
|
ADD_TEST(test_msc_get_dangerous_neighbor_count__shall_be_X_up_to_8__after_X_increments);
|
|
|
|
ADD_TEST(test_msc_get_marker__shall_provide_NONE__for_initial_cell);
|
|
ADD_TEST(test_msc_get_marker__shall_provide_NONE__for_invalid_cell);
|
|
ADD_TEST(test_msc_get_marker__shall_provide_set_marker);
|
|
|
|
ADD_TEST(test_msc_is_covered__shall_be_true__for_initial_cell);
|
|
ADD_TEST(test_msc_is_covered__shall_be_false__for_uncovered_cell);
|
|
ADD_TEST(test_msc_is_covered__shall_be_false__for_invalid_cell);
|
|
|
|
ADD_TEST(test_msc_uncovered__shall_be_true__for_covered_cell);
|
|
ADD_TEST(test_msc_uncovered__shall_be_true__for_unmarked_cell);
|
|
ADD_TEST(test_msc_uncovered__shall_be_false__for_invalid_cell);
|
|
ADD_TEST(test_msc_uncovered__shall_be_false__for_uncovered_cell);
|
|
ADD_TEST(test_msc_uncovered__shall_be_false__for_marked_cell);
|
|
|
|
ADD_TEST(test_msc_is_valid__shall_be_false__for_cell_with_more_than_eight_neighbors);
|
|
|
|
/* BOARD ***********************************/
|
|
ADD_TEST(test_msb_get_board__shall_provide_non_null_board);
|
|
ADD_TEST(test_msb_get_board__shall_provide_identical_board_instance);
|
|
|
|
ADD_TEST(test_msb_init_board__shall_provide_valid_board);
|
|
ADD_TEST(test_msb_init_board__shall_provide_invalid_board__for_zero_cols);
|
|
ADD_TEST(test_msb_init_board__shall_provide_invalid_board__for_zero_rows);
|
|
ADD_TEST(test_msb_init_board__shall_provide_valid_board__for_too_many_cols);
|
|
ADD_TEST(test_msb_init_board__shall_provide_valid_board__for_too_many_rows);
|
|
|
|
ADD_TEST(test_msb_is_valid__shall_be_true__for_valid_board);
|
|
ADD_TEST(test_msb_is_valid__shall_be_false__for_null_board);
|
|
ADD_TEST(test_msb_is_valid__shall_be_false__for_zero_dimensions);
|
|
|
|
ADD_TEST(test_msb_get_cell__shall_provide_a_non_null_cell__for_idx_within_board_size);
|
|
ADD_TEST(test_msb_get_cell__shall_provide_a_null_cell__for_idx_outside_board_size);
|
|
|
|
ADD_TEST(test_msb_init_board__shall_provide_valid_covered_empty_cells);
|
|
|
|
ADD_TEST(test_msb_get_column_count__shall_be_configured_count__for_valid_board);
|
|
ADD_TEST(test_msb_get_column_count__shall_be_zero__for_invalid_board);
|
|
ADD_TEST(test_msb_get_row_count__shall_be_configured_count__for_valid_board);
|
|
ADD_TEST(test_msb_get_row_count__shall_be_zero__for_invalid_board);
|
|
|
|
/* UI UTILS ***********************************/
|
|
ADD_TEST(test_random);
|
|
ADD_TEST(test_convert_column_addr);
|
|
ADD_TEST(test_convert_actions);
|
|
ADD_TEST(test_convert_row_addr);
|
|
ADD_TEST(test_get_marker_symbol);
|
|
ADD_TEST(test_get_mine_symbol);
|
|
ADD_TEST(test_get_status_label);
|
|
|
|
/* GAME ***********************************/
|
|
ADD_TEST(test_msg_start_configured_game__shall_provide_valid_game);
|
|
ADD_TEST(test_msg_start_game__shall_provide_valid_game__for_valid_arguments);
|
|
|
|
ADD_TEST(test_msg_is_valid__shall_be_true__for_valid_game);
|
|
ADD_TEST(test_msg_is_valid__shall_be_false__for_0_game);
|
|
ADD_TEST(test_msg_is_valid__shall_be_false__for_game_with_zero_sized_board);
|
|
|
|
ADD_TEST(test_msg_get_board__provides_valid_board__for_valid_game);
|
|
ADD_TEST(test_msg_get_board__provides_invalid_board__for_invalid_game);
|
|
|
|
ADD_TEST(test_msg_select_cell__shall_be_true__for_covered_cell_in_range);
|
|
ADD_TEST(test_msg_select_cell__shall_be_false__for_invalid_game);
|
|
ADD_TEST(test_msg_select_cell__shall_be_false__for_uncovered_cell_in_range);
|
|
|
|
ADD_TEST(test_msg_get_select_cell__shall_provide_cell__for_valid_selection);
|
|
ADD_TEST(test_msg_get_select_cell__shall_provide_0__for_invalid_selection);
|
|
|
|
ADD_TEST(test_msg_uncover_selected_cell__shall_uncover_selected_cell);
|
|
ADD_TEST(test_msg_uncover_selected_cell__shall_ignore_covered_cell);
|
|
ADD_TEST(test_msg_uncover_selected_cell__shall_not_crash_on_invalid_game);
|
|
|
|
ADD_TEST(test_msg_mark_selected_cell__shall_mark_selected_cell_and_ignore_subsequent_calls);
|
|
ADD_TEST(test_msg_mark_selected_cell__shall_ignore_mine_detection_if_number_of_mines_is_reached);
|
|
ADD_TEST(test_msg_mark_selected_cell__shall_clear_detection_marker);
|
|
ADD_TEST(test_msg_mark_selected_cell__shall_clear_suspicion_marker);
|
|
|
|
ADD_TEST(test_msg_get_state__in_progress);
|
|
ADD_TEST(test_msg_get_state__failed);
|
|
ADD_TEST(test_msg_get_state__success);
|
|
ADD_TEST(test_msg_get_state__invalid_game);
|
|
|
|
ADD_TEST(test_msg_start_game__is_initialization_valid);
|
|
ADD_TEST(test_msg_start_game__no_mine_distributed_before_the_first_cell_is_uncovered);
|
|
ADD_TEST(test_msg_start_game__first_uncovered_cell_is_empty);
|
|
ADD_TEST(test_msg_start_game__verify_dangerous_neighbor_counts);
|
|
|
|
ADD_TEST(test_msg_get_mines_left_count);
|
|
ADD_TEST(test_msg_get_mines_suspected_count);
|
|
ADD_TEST(test_msg_get_uncover_action_count);
|
|
|
|
run_tests();
|
|
return 0;
|
|
}
|