From 2020520963e3cdd96d8cbad5a42b34b15500939d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophyl=20Hoguet?= Date: Fri, 11 Feb 2022 19:24:48 +0100 Subject: [PATCH 1/3] update launch for new test + gitignore => txt --- .gitignore | 3 ++- .vscode/launch.json | 62 +++------------------------------------------ 2 files changed, 6 insertions(+), 59 deletions(-) diff --git a/.gitignore b/.gitignore index 01f9cb9..c076002 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build/ -.vscode/ \ No newline at end of file +.vscode/ +*.txt \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 7686160..15864e7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -30,12 +30,12 @@ "preLaunchTask": "make_build" }, { - "name": "(gdb) debug tests thoguet", + "name": "(gdb) debug tests", "type": "cppdbg", "request": "launch", - "program": "${workspaceFolder}/build/game_test_thoguet", + "program": "${workspaceFolder}/build/game_test", "args": [ - "game_default_solution" + "game_save" ], "stopAtEntry": false, "cwd": "${fileDirname}", @@ -55,60 +55,6 @@ } ], "preLaunchTask": "make_build" - }, - { - "name": "(gdb) debug tests histo", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/build/history_test", - "args": [ - "history_copy" - ], - "stopAtEntry": false, - "cwd": "${fileDirname}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - }, - { - "description": "Set Disassembly Flavor to Intel", - "text": "-gdb-set disassembly-flavor intel", - "ignoreFailures": true - } - ], - "preLaunchTask": "make_build" - }, - { - "name": "(gdb) debug tests thperrier", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/build/game_test_thperrier", - "args": [ - "game_copy" - ], - "stopAtEntry": false, - "cwd": "${fileDirname}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - }, - { - "description": "Set Disassembly Flavor to Intel", - "text": "-gdb-set disassembly-flavor intel", - "ignoreFailures": true - } - ], - "preLaunchTask": "make_build" - }, + } ] } \ No newline at end of file From e0f9d67a8338a775e292b3150fb1ce3c76353d87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophyl=20Hoguet?= Date: Fri, 11 Feb 2022 19:23:50 +0100 Subject: [PATCH 2/3] need add more tests but functional (related #2) --- CMakeLists.txt | 4 +++ game_examples.c | 14 ++++++++ game_examples.h | 3 ++ game_test.c | 96 ++++++++++++++----------------------------------- 4 files changed, 47 insertions(+), 70 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 277e827..32d9213 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,6 +63,10 @@ add_test(test_nnunes_game_nb_cols_v2 ./game_test game_nb_cols) add_test(test_nnunes_game_is_wrapping_v2 ./game_test game_is_wrapping) add_test(test_thoguet_game_print_v2 ./game_test game_print) +# V3 + +add_test(test_thoguet_game_save_v3 ./game_test game_save) + #Tests HISTORY # add_test(test_history_history_alloc ./history_test history_alloc) # add_test(test_history_create_empty ./history_test history_create_empty) diff --git a/game_examples.c b/game_examples.c index 82be801..febe04e 100644 --- a/game_examples.c +++ b/game_examples.c @@ -209,3 +209,17 @@ square sol_5x3w_squares[] = { }; /* ************************************************************************** */ +/* GAME SAVE (V3) */ +/* ************************************************************************** */ + +char game_default_str[] = { + '7', ' ', '7', ' ', '0', '\n', // \n + 'b', 'b', '1', 'b', 'b', 'b', 'b', '\n', // ...\n + 'b', 'b', '2', 'b', 'b', 'b', 'b', '\n', // ...\n + 'b', 'b', 'b', 'b', 'b', 'w', '2', '\n', // ...\n + 'b', 'b', 'b', 'b', 'b', 'b', 'b', '\n', // ...\n + '1', 'w', 'b', 'b', 'b', 'b', 'b', '\n', // ...\n + 'b', 'b', 'b', 'b', '2', 'b', 'b', '\n', // ...\n + 'b', 'b', 'b', 'b', 'w', 'b', 'b', '\n' // ...\n +}; +/* ************************************************************************** */ \ No newline at end of file diff --git a/game_examples.h b/game_examples.h index e13790f..89ccf51 100644 --- a/game_examples.h +++ b/game_examples.h @@ -31,4 +31,7 @@ extern square sol_3x3w_squares[]; extern square ext_2x2w_squares[]; extern square sol_2x2w_squares[]; +// V3 +extern char game_default_str[]; + #endif // __GAME_EXAMPLES_H__ diff --git a/game_test.c b/game_test.c index 73b5435..af17cb2 100644 --- a/game_test.c +++ b/game_test.c @@ -12,11 +12,17 @@ #define TAB_SQUARE \ { S_BLANK, S_LIGHTBULB, S_MARK, S_BLACK0, S_BLACK1, S_BLACK2, S_BLACK3, S_BLACK4, S_BLACKU } + #define SIZE_LIMIT_GAME 10 + // put usable square at the start of the list and S_BLANK at the first element #define LIST_OF_SQUARE \ { S_BLANK, S_LIGHTBULB, S_MARK, S_BLACK0, S_BLACK1, S_BLACK2, S_BLACK3, S_BLACK4, S_BLACKU, F_LIGHTED, F_ERROR } + #define USABLE_SQUARE 2 + +#define NB_CHAR_SAVED_FILE_INFO 6 + /* ********** game_get_black_number ********** */ bool test_game_get_black_number(bool whoami, char** name) { if (whoami) { @@ -828,76 +834,6 @@ bool test_game_check_move(bool whoami, char** name) { return true; } -/* ***** game_save ***** */ -bool test_game_save(bool whoami, char** name) { - if (whoami) { - *name = (char*)__func__; - return false; - } - game g4x4w = game_new_ext(4, 4, ext_4x4_squares, true); - game_save(g4x4w, "g4x4w.txt"); - game g4x4w_from_file = game_load("g4x4w.txt"); - assert(game_equal(g4x4w, g4x4w_from_file)); - game_delete(g4x4w); - game_delete(g4x4w_from_file); - game g4x4 = game_new_ext(4, 4, ext_4x4_squares, false); - game_save(g4x4, "g4x4.txt"); - game g4x4_from_file = game_load("g4x4.txt"); - assert(game_equal(g4x4, g4x4_from_file)); - game_delete(g4x4); - game_delete(g4x4_from_file); - game g3x10w = game_new_ext(3, 10, ext_3x10_squares, true); - game_save(g3x10w, "g3x10w.txt"); - game g3x10w_from_file = game_load("g3x10w.txt"); - assert(game_equal(g3x10w, g3x10w_from_file)); - game_delete(g3x10w); - game_delete(g3x10w_from_file); - game g3x10 = game_new_ext(3, 10, ext_3x10_squares, false); - game_save(g3x10, "g3x10.txt"); - game g3x10_from_file = game_load("g3x10.txt"); - assert(game_equal(g3x10, g3x10_from_file)); - game_delete(g3x10); - game_delete(g3x10_from_file); - game g5x1w = game_new_ext(5, 1, ext_5x1_squares, true); - game_save(g5x1w, "g5x1w.txt"); - game g5x1w_from_file = game_load("g5x1w.txt"); - assert(game_equal(g5x1w, g5x1w_from_file)); - game_delete(g5x1w); - game_delete(g5x1w_from_file); - game g5x1 = game_new_ext(5, 1, ext_5x1_squares, false); - game_save(g5x1, "g5x1.txt"); - game g5x1_from_file = game_load("g5x1.txt"); - assert(game_equal(g5x1, g5x1_from_file)); - game_delete(g5x1); - game_delete(g5x1_from_file); - game g2x2w = game_new_ext(5, 1, ext_2x2w_squares, true); - game_save(g2x2w, "g2x2w.txt"); - game g2x2w_from_file = game_load("g2x2w.txt"); - assert(game_equal(g2x2w, g2x2w_from_file)); - game_delete(g2x2w); - game_delete(g2x2w_from_file); - game g2x2 = game_new_ext(5, 1, ext_2x2w_squares, false); - game_save(g2x2, "g2x2.txt"); - game g2x2_from_file = game_load("g2x2.txt"); - assert(game_equal(g2x2, g2x2_from_file)); - game_delete(g2x2); - game_delete(g2x2_from_file); - game g3x3w = game_new_ext(3, 3, ext_3x3w_squares, true); - game_save(g3x3w, "g3x3w.txt"); - game g3x3w_from_file = game_load("g3x3w.txt"); - assert(game_equal(g3x3w, g3x3w_from_file)); - game_delete(g3x3w); - game_delete(g3x3w_from_file); - game g3x3 = game_new_ext(3, 3, ext_3x3w_squares, false); - game_save(g3x3, "g3x3.txt"); - game g3x3_from_file = game_load("g3x3.txt"); - assert(game_equal(g3x3, g3x3_from_file)); - game_delete(g3x3); - game_delete(g3x3_from_file); - - return true; -} - /* ************** game_set_square ************** */ bool test_game_set_square(bool whoami, char** name) { if (whoami) { @@ -1096,6 +1032,26 @@ bool test_game_is_wrapping(bool whoami, char** name) { return false; } +/* ***** game_save ***** */ +bool test_game_save(bool whoami, char** name) { + // if whoami is true return in name the name of the function + if (whoami) { + *name = (char*)__func__; + return false; + } + game gdefault = game_default(); + game_save(gdefault, "gdefault.txt"); + FILE* f_gdefault = fopen("gdefault.txt", "r"); + assert(f_gdefault); + char char_to_test = '?'; + for (uint index_gdefault_str = 0; index_gdefault_str < game_nb_cols(gdefault) * game_nb_rows(gdefault) + NB_CHAR_SAVED_FILE_INFO + game_nb_rows(gdefault); + index_gdefault_str++) { + char_to_test = fgetc(f_gdefault); + assert(char_to_test == game_default_str[index_gdefault_str]); + } + return true; +} + /* ********** USAGE ********** */ int usage(char* argv[]) { From ff94de783b23bb5a8381ea4ff3935dc3a11bae08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophyl=20Hoguet?= Date: Fri, 11 Feb 2022 19:45:19 +0100 Subject: [PATCH 3/3] tests equal changed name --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32d9213..e81cbb2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,7 @@ add_test(test_thperrier_game_get_black_number_v1 ./game_test game_get_black_numb add_test(test_thperrier_game_is_lightbulb_v1 ./game_test game_is_lightbulb) add_test(test_thperrier_game_is_blank_v1 ./game_test game_is_blank) add_test(test_thperrier_game_new_empty_v1 ./game_test game_new_empty) +add_test(test_game_equal_v1 ./game_test equal) # V2 @@ -53,7 +54,7 @@ add_test(test_thoguet_game_check_move_v2 ./game_test game_check_move) add_test(test_thoguet_game_new_empty_ext_v2 ./game_test game_new_empty_ext) add_test(test_thoguet_game_new_ext_v2 ./game_test game_new_ext) add_test(test_thperrier_game_copy_v2 ./game_test game_copy) -add_test(test_thperrier_game_equal_v2 ./game_test game_equal) +add_test(test_game_equal_v2 ./game_test equal_ext) add_test(test_thperrier_game_delete_v2 ./game_test game_delete) add_test(test_thperrier_game_undo_v2 ./game_test game_undo) add_test(test_thperrier_game_redo_v2 ./game_test game_redo)