#include #include #include #include #include #include "game.h" #include "game_aux.h" /* ********** DUMMY ********** */ bool test_dummy() { return true; } /* ********** game_get_black_number ********** */ bool test_game_get_black_number() { game g = game_new_empty(); game_set_square(g, 0, 0, S_BLACK0); if (game_get_black_number(g, 0, 0) != 0) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK1); if (game_get_black_number(g, 0, 0) != 1) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK2); if (game_get_black_number(g, 0, 0) != 2) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK3); if (game_get_black_number(g, 0, 0) != 3) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK4); if (game_get_black_number(g, 0, 0) != 4) { game_delete(g); return false; } game_delete(g); return true; } /* ********** game_is_black ********** */ bool test_game_is_black() { game g = game_new_empty(); if (game_is_black(g, 0, 0)) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACKU); if (!game_is_black(g, 0, 0)) { game_delete(g); return false; } if (!((game_get_square(g, 0, 0) == S_BLACKU) && game_is_black(g, 0, 0))) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK0); if (!((game_get_square(g, 0, 0) == S_BLACK0) && game_is_black(g, 0, 0))) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK1); if (!((game_get_square(g, 0, 0) == S_BLACK1) && game_is_black(g, 0, 0))) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK2); if (!((game_get_square(g, 0, 0) == S_BLACK2) && game_is_black(g, 0, 0))) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK3); if (!((game_get_square(g, 0, 0) == S_BLACK3) && game_is_black(g, 0, 0))) { game_delete(g); return false; } game_set_square(g, 0, 0, S_BLACK4); if (!((game_get_square(g, 0, 0) == S_BLACK4) && game_is_black(g, 0, 0))) { game_delete(g); return false; } game_set_square(g, 0, 0, S_MARK); if ((game_get_square(g, 0, 0) == S_MARK) && game_is_black(g, 0, 0)) { game_delete(g); return false; } game_set_square(g, 0, 0, S_MARK); if ((game_get_square(g, 0, 0) == S_MARK) && game_is_black(g, 0, 0)) { game_delete(g); return false; } game_set_square(g, 0, 0, S_LIGHTBULB); if ((game_get_square(g, 0, 0) == S_LIGHTBULB) && game_is_black(g, 0, 0)) { game_delete(g); return false; } game_set_square(g, 0, 0, S_LIGHTBULB); if ((game_get_square(g, 0, 0) == S_LIGHTBULB) && game_is_black(g, 0, 0)) { game_delete(g); return false; } game_set_square(g, 0, 0, F_ERROR); if ((game_get_square(g, 0, 0) == F_ERROR) && game_is_black(g, 0, 0)) { game_delete(g); return false; } game_set_square(g, 0, 0, F_LIGHTED); if ((game_get_square(g, 0, 0) == F_LIGHTED) && game_is_black(g, 0, 0)) { game_delete(g); return false; } game_delete(g); return true; } /* ********** game_is_lightbulb ********** */ bool test_game_is_lightbulb() { game g = game_new_empty(); game_set_square(g, 0, 0, S_LIGHTBULB); if ((game_get_square(g, 0, 0) == S_LIGHTBULB) && game_is_lightbulb(g, 0, 0)) { game_delete(g); return true; } game_delete(g); return false; } /* ********** game_is_blank ********** */ bool test_game_is_blank() { game g = game_new_empty(); if (game_is_blank(g, 0, 0)) { game_delete(g); return true; } game_delete(g); return false; } /* ********** game_delete ********** */ bool test_game_delete() { game g = game_new_empty(); assert(g); game_delete(g); return true; } /* ********** game_equal ********** */ bool test_game_equal() { bool equal = true; game g1 = game_new_empty(); game g2 = game_new_empty(); for (int i = 0; i < DEFAULT_SIZE; i++) { for (int j = 0; j < DEFAULT_SIZE; j++) { if (game_get_square(g1, i, j) != game_get_square(g2, i, j)) { equal = false; } } } equal = (equal == game_equal(g1, g2)); game_delete(g1); game_delete(g2); return equal; } /* ********** game_new_empty ********** */ bool test_game_new_empty() { game g = game_new_empty(); assert(g); for (int i = 0; i < DEFAULT_SIZE; i++) { for (int j = 0; j < DEFAULT_SIZE; j++) { if (game_get_square(g, i, j) != S_BLANK) { game_delete(g); return false; } } } game_delete(g); return true; } /* ********** game_copy ********** */ bool test_game_copy() { game g1 = game_new_empty(); for (int i = 0; i < DEFAULT_SIZE; i++) { game_set_square(g1, i, 0, S_LIGHTBULB); game_set_square(g1, i, 1, S_MARK); game_set_square(g1, i, 2, S_BLACKU); game_set_square(g1, i, 3, S_BLACK0); game_set_square(g1, i, 4, S_BLACK1); game_set_square(g1, 1, 2, F_LIGHTED); game_set_square(g1, 1, 3, F_ERROR); } game g2 = game_copy(g1); assert(g2); if (!game_equal(g1, g2)) { game_delete(g1); game_delete(g2); return false; } for (int i = 0; i < DEFAULT_SIZE; i++) { for (int j = 0; j < DEFAULT_SIZE; j++) { game_set_square(g2, i, j, S_BLACK3); } } g2 = game_copy(g1); assert(g2); if (!game_equal(g1, g2)) { game_delete(g1); game_delete(g2); return false; } game_delete(g1); game_delete(g2); return true; } /* ********** usage ********** */ void usage(int argc, char* argv[]) { fprintf(stderr, "Usage: %s \n", argv[0]); exit(EXIT_FAILURE); } /* ********** main ********** */ int main(int argc, char* argv[]) { bool success = false; if (argc != 2) { usage(argc, argv); } else if (strcmp("dummy", argv[1]) == 0) { success = test_dummy(); } else if (strcmp("game_new_empty", argv[1]) == 0) { success = test_game_new_empty(); } else if (strcmp("game_copy", argv[1]) == 0) { success = test_game_copy(); } else if (strcmp("game_equal", argv[1]) == 0) { success = test_game_equal(); } else if (strcmp("game_delete", argv[1]) == 0) { success = test_game_delete(); } else if (strcmp("game_is_blank", argv[1]) == 0) { success = test_game_is_blank(); } else if (strcmp("game_is_lightbulb", argv[1]) == 0) { success = test_game_is_lightbulb(); } else if (strcmp("game_is_black", argv[1]) == 0) { success = test_game_is_black(); } else if (strcmp("game_get_black_number", argv[1]) == 0) { success = test_game_get_black_number(); } else { fprintf(stderr, "test \"%s\" is not a valid test name.\n", argv[1]); return EXIT_FAILURE; } if (success) { fprintf(stderr, "test \"%s\" finished successfully\n", argv[1]); return EXIT_SUCCESS; } else { fprintf(stderr, "test \"%s\" error\n", argv[1]); return EXIT_FAILURE; } return EXIT_SUCCESS; }