Merge branch 'main' of gitlab.emi.u-bordeaux.fr:pt2/teams-s4/tm07/lightup-07c

This commit is contained in:
Mohamed Fatih committed 2022-02-11 19:56:51 +01:00
commit bd15602c32
6 files changed
+55 -130

No files matched your search

+2 -1
View File
@@ -1,2 +1,3 @@
build/
.vscode/
.vscode/
*.txt
+4 -58
View File
@@ -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"
},
}
]
}
+6 -1
View File
@@ -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)
@@ -63,6 +64,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)
+14
View File
@@ -209,3 +209,17 @@ square sol_5x3w_squares[] = {
};
/* ************************************************************************** */
/* GAME SAVE (V3) */
/* ************************************************************************** */
char game_default_str[] = {
'7', ' ', '7', ' ', '0', '\n', // <nb_rows> <nb_cols> <wrapping>\n
'b', 'b', '1', 'b', 'b', 'b', 'b', '\n', // <squares[0][0]><squares[0][1]>...<squares[0][nb_cols-1]>\n
'b', 'b', '2', 'b', 'b', 'b', 'b', '\n', // <squares[1][0]><squares[1][1]>...<squares[1][nb_cols-1]>\n
'b', 'b', 'b', 'b', 'b', 'w', '2', '\n', // <squares[2][0]><squares[2][1]>...<squares[2][nb_cols-1]>\n
'b', 'b', 'b', 'b', 'b', 'b', 'b', '\n', // <squares[3][0]><squares[3][1]>...<squares[3][nb_cols-1]>\n
'1', 'w', 'b', 'b', 'b', 'b', 'b', '\n', // <squares[4][0]><squares[4][1]>...<squares[4][nb_cols-1]>\n
'b', 'b', 'b', 'b', '2', 'b', 'b', '\n', // <squares[5][0]><squares[5][1]>...<squares[5][nb_cols-1]>\n
'b', 'b', 'b', 'b', 'w', 'b', 'b', '\n' // <squares[6][0]><squares[6][1]>...<squares[6][nb_cols-1]>\n
};
/* ************************************************************************** */
+3
View File
@@ -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__
+26 -70
View File
@@ -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[]) {