diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 5c7247b..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [] -} \ No newline at end of file diff --git a/Plan.md b/Plan.md new file mode 100644 index 0000000..08d2ffe --- /dev/null +++ b/Plan.md @@ -0,0 +1,58 @@ +## Spielablauf: + +1. Ausgabe vom Spielfeld + +2. Weiß nach Figur für Zug fragen + +3. Weiß nach Ziel der Figur fragen + +4. Überprüfen ob Eingabe möglich ist + + 4.1. falls nicht Schritt 2,3 und 4 Wiederholen + + 4.2. Schach überprüfen bzw Schachmatt + +5. Figur bewegen + + 5.1. falls gegnerische Figur -> Schlagen + +6. Wiederholung von 1-5 für Schwarz + + + +## Programmablauf: + +1. Spielfeld in der create_Schachfeld erstellen + + 1.1 Schachfeld füllen + +2. Spielfeld anzeigen mit print_Schachfeld + +3. Eingabe mit choose_Figur + + 3.1 erst x dann y + +4. Eingabe mit choose_destination_Figur + + 4.1 erst x dann y + +5. Überprüfung der Figur mit check_Figur + + 5.1.bsp.: Eingabe choose_Figur x=0 y=0 temp. char welcher die eingabe des Spielfeldarray an der Stelle 0 0 speichert + + 5.2. if abfrage welche Figur da steht + + 5.2.1. wechsel in die seperaten Figuren-Funktionen(Datein) + + 5.3. Prüfen ob schwarz oder weiß durch groß und kleinschreibung + +6. In den seperaten Figuren-Funktionen wird überprüft ob der Zug möglich ist + + 6.1 wenn möglich wird die Figur an die stelle gesetzt + + 6.2 wenn es nicht möglich ist dann wird Schritt 2-6 wiederholt + +7.(Schachmatt wird in check_checkmate überprüft) + +8.Schritt 2-8 wird Wiederholt + diff --git a/build/test/cache/defines_dependency.yml b/build/test/cache/defines_dependency.yml deleted file mode 100644 index 1099772..0000000 --- a/build/test/cache/defines_dependency.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -src/schach.c: -- TEST diff --git a/build/test/cache/input.yml b/build/test/cache/input.yml deleted file mode 100644 index eefbd61..0000000 --- a/build/test/cache/input.yml +++ /dev/null @@ -1,242 +0,0 @@ ---- -:project: - :use_exceptions: false - :use_mocks: true - :compile_threads: 1 - :test_threads: 1 - :use_test_preprocessor: true - :use_preprocessor_directives: false - :use_deep_dependencies: false - :generate_deep_dependencies: true - :auto_link_deep_dependencies: false - :test_file_prefix: test_ - :options_paths: [] - :release_build: false - :use_auxiliary_dependencies: true - :build_root: build - :which_ceedling: gem - :ceedling_version: 0.31.1 - :default_tasks: - - test:all -:release_build: - :use_assembly: false - :artifacts: [] -:paths: - :test: - - "+:test/**" - - "-:test/support" - :source: - - src/** - :support: - - test/support - :include: [] - :libraries: [] - :test_toolchain_include: [] - :release_toolchain_include: [] -:files: - :test: [] - :source: [] - :assembly: [] - :support: [] - :include: [] -:environment: -- :rake_columns: '120' -:defines: - :test: - - &1 [] - - TEST - :test_preprocess: - - *1 - - TEST - :release: [] - :release_preprocess: [] - :use_test_definition: false - :common: [] -:libraries: - :flag: "-l${1}" - :path_flag: "-L ${1}" - :test: [] - :test_preprocess: [] - :release: [] - :release_preprocess: [] - :placement: :end - :system: [] -:flags: {} -:extension: - :header: ".h" - :source: ".c" - :assembly: ".s" - :object: ".o" - :libraries: - - ".a" - - ".so" - :executable: ".out" - :map: ".map" - :list: ".lst" - :testpass: ".pass" - :testfail: ".fail" - :dependencies: ".d" -:unity: - :vendor_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor - :defines: [] -:cmock: - :vendor_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor - :defines: [] - :includes: [] - :mock_prefix: mock_ - :when_no_prototypes: :warn - :enforce_strict_ordering: true - :plugins: - - :ignore - - :callback - :treat_as: - uint8: HEX8 - uint16: HEX16 - uint32: UINT32 - int8: INT8 - bool: UINT8 - :mock_path: build/test/mocks - :verbosity: 3 - :unity_helper: false -:cexception: - :vendor_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor - :defines: [] -:test_runner: - :includes: [] - :file_suffix: _runner -:tools: - :test_compiler: - :executable: gcc.exe - :name: default_test_compiler - :stderr_redirect: :none - :background_exec: :none - :optional: false - :arguments: - - '' - - '' - - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR - - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE - - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR - - "-DGNU_COMPILER" - - "-g" - - '' - - -c "${1}" - - -o "${2}" - - "-MMD" - - -MF "${4}" - :test_fixture: - :executable: "${1}" - :name: default_test_fixture - :stderr_redirect: :auto - :background_exec: :none - :optional: false - :arguments: [] - :test_linker: - :executable: gcc.exe - :name: default_test_linker - :stderr_redirect: :none - :background_exec: :none - :optional: false - :arguments: - - '' - - '' - - '' - - '"${1}"' - - "${5}" - - -o "${2}" - - '' - - "${4}" - - '' - :test_file_preprocessor: - :executable: gcc.exe - :name: default_test_file_preprocessor - :stderr_redirect: :none - :background_exec: :none - :optional: false - :arguments: - - '' - - '' - - "-E" - - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR - - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE - - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR - - "-D$": DEFINES_TEST_PREPROCESS - - "-DGNU_COMPILER" - - '"${1}"' - - -o "${2}" - :test_file_preprocessor_directives: - :executable: gcc.exe - :name: default_test_file_preprocessor_directives - :stderr_redirect: :none - :background_exec: :none - :optional: false - :arguments: - - "-E" - - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR - - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE - - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR - - "-D$": DEFINES_TEST_PREPROCESS - - "-DGNU_COMPILER" - - "-fdirectives-only" - - '"${1}"' - - -o "${2}" - :test_includes_preprocessor: - :executable: gcc.exe - :name: default_test_includes_preprocessor - :stderr_redirect: :none - :background_exec: :none - :optional: false - :arguments: - - '' - - '' - - "-E" - - "-MM" - - "-MG" - - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR - - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE - - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR - - "-D$": DEFINES_TEST_PREPROCESS - - "-DGNU_COMPILER" - - '"${1}"' -:test_compiler: - :arguments: [] -:test_linker: - :arguments: [] -:test_fixture: - :arguments: [] - :link_objects: [] -:test_includes_preprocessor: - :arguments: [] -:test_file_preprocessor: - :arguments: [] -:test_file_preprocessor_directives: - :arguments: [] -:test_dependencies_generator: - :arguments: [] -:release_compiler: - :arguments: [] -:release_linker: - :arguments: [] -:release_assembler: - :arguments: [] -:release_dependencies_generator: - :arguments: [] -:plugins: - :load_paths: - - C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins - :enabled: - - stdout_pretty_tests_report - - module_generator - :display_raw_test_results: false - :stdout_pretty_tests_report_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report - :module_generator_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/module_generator -:gcov: - :reports: - - HtmlDetailed - :gcovr: - :html_medium_threshold: 75 - :html_high_threshold: 90 -:module_generator: - :project_root: "./" - :source_root: src/ - :test_root: test/ diff --git a/build/test/cache/test_schach.c b/build/test/cache/test_schach.c deleted file mode 100644 index 5b82adc..0000000 --- a/build/test/cache/test_schach.c +++ /dev/null @@ -1,257 +0,0 @@ -#include "src/schach.h" -#include "C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" - - - - - - - - - - -void setUp(void) - -{ - -} - - - -void tearDown(void) - -{ - -} - - - -void test_print_Schachfeld(void){ - - - - char expected = 'S'; - - int x = 8; - - int y = 8; - - - - - - char** Spielfeld = create_Schachfeld(x, y); - - - - - - UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[5][0])), ( - - ((void *)0) - - ), (UNITY_UINT)(26), UNITY_DISPLAY_STYLE_CHAR); - - UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[4][3])), ( - - ((void *)0) - - ), (UNITY_UINT)(27), UNITY_DISPLAY_STYLE_CHAR); - -} - - - -void test_print_Schachfeld_Turm_weiss(void){ - - - - char expected = 'T'; - - int x = 8; - - int y = 8; - - - - - - char** Spielfeld = create_Schachfeld(x, y); - - - - - - UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[0][0])), ( - - ((void *)0) - - ), (UNITY_UINT)(40), UNITY_DISPLAY_STYLE_CHAR); - - UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[0][7])), ( - - ((void *)0) - - ), (UNITY_UINT)(41), UNITY_DISPLAY_STYLE_CHAR); - -} - - - -void test_print_Schachfeld_Bauern_weiss(void){ - - - - char expected = 'B'; - - int x = 8; - - int y = 8; - - - - - - char** Spielfeld = create_Schachfeld(x, y); - - - - - - for(int l = 0;l +#include +#include + +char* getUserInput() { + + const int BUFFER_SIZE = 64; + char *input = (char*)malloc(BUFFER_SIZE * sizeof(char)); + if (input == NULL) { + // Fehler bei speicherzuweisung + return NULL; + } + + printf("-> "); + if (fgets(input, BUFFER_SIZE, stdin) == NULL) { + // Fehler bei fgets + free(input); + return NULL; + } + + size_t len = strlen(input); + if (len > 0 && input[len - 1] == '\n') { + input[len - 1] = '\0'; + } + + // Länge an den eigentlichen input anpassen um speicher zu sparen + char *resizedInput = realloc(input, strlen(input) + 1); + if (resizedInput != NULL) { + input = resizedInput; + } + return input; +} diff --git a/src/Input.h b/src/Input.h new file mode 100644 index 0000000..132a3d4 --- /dev/null +++ b/src/Input.h @@ -0,0 +1,6 @@ +#ifndef INPUT +#define INPUT + +char* getUserInput(); + +#endif // INPUT diff --git a/src/Moving.c b/src/Moving.c new file mode 100644 index 0000000..f15e0ce --- /dev/null +++ b/src/Moving.c @@ -0,0 +1,17 @@ +#include +#include +#include +#include "spieler.h" + +bool istzugerlaubt(char** Brett, int startX, int startY, int endX, int endY, Player player) { + /* Regeln hierhin + z.B. schauen ob der zug auch innerhalb vom spielbrett ist, + schauen ob auf dem zielfeld keine eigene Figur steht, + schauen ob von der startposition aus der zug auch für die ausgewählte figur möglich ist. + + return true wenn möglich oder false falls nicht. + */ +} +void machezug(char** Brett, int startX, int startY, int endX, int endY) { + //wenn istzugerlaubt true ist wird das hier ausgeführt +} diff --git a/src/Moving.h b/src/Moving.h new file mode 100644 index 0000000..8a9c252 --- /dev/null +++ b/src/Moving.h @@ -0,0 +1,10 @@ +#ifndef MOVING_H +#define MOVING_H + +#include +#include "spieler.h" + +bool istzugerlaubt(char** Brett, int startX, int startY, int endX, int endY, Player player); +void machezug(char** Brett, int startX, int startY, int endX, int endY); + +#endif // MOVING_H \ No newline at end of file diff --git a/src/Schachbrett.c b/src/Schachbrett.c new file mode 100644 index 0000000..de433f0 --- /dev/null +++ b/src/Schachbrett.c @@ -0,0 +1,68 @@ +#include +#include + +char** Schachbrett_erstellen() { + + int R = 8; //Reihen + int Z = 8; //zeilen + + //Dynamisch Platz zuweisen für schachbrett + char** Brett = (char**)malloc(R * sizeof(char*)); + + if (Brett == NULL) { + // Fehler bei speicherzuweißung + return NULL; + } + for (int i = 0; i < R; i++) { + Brett[i] = (char*)malloc(Z * sizeof(char)); + if (Brett[i] == NULL) { + // Speicherfehlerbehbung + for (int j = 0; j < i; j++) { + free(Brett[j]); + } + free(Brett); + return NULL; + } + } + + // Spielbrett befüllen, groß und kleinschreibung unterschiedlich um schwarz/weiß zu trennen + char Aufbau[8][8] = { + { 'R' , 'N' , 'B' , 'Q' , 'K' , 'B' , 'N' , 'R' }, + { 'P' , 'P' , 'P' , 'P' , 'P' , 'P' , 'P' , 'P' }, + { ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, + { ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, + { ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, + { ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, + { 'p' , 'p' , 'p' , 'p' , 'p' , 'p' , 'p' , 'p' }, + { 'r' , 'n' , 'b' , 'q' , 'k' , 'b' , 'n' , 'r' } + }; + + for (int i = 0; i < 8; i++) { + for (int j = 0; j < 8; j++) { + Brett[i][j] = Aufbau[i][j]; + } + } + + return Brett; +} + +void print_Schachfeld(char** Brett, int Reihen, int Spalten) { + for (int i = 0; i < Reihen; i++) { + for (int j = 0; j < Spalten; j++) { + printf(" %c ", Brett[i][j]); + } + printf("\n"); + } +} + +void Schachbrettspeicher_freigeben(char** Brett, int Reihen) { + if (Brett == NULL) { + return; + } + + for (int i = 0; i < Reihen; i++) { + free(Brett[i]); + } + + free(Brett); +} diff --git a/src/Schachbrett.h b/src/Schachbrett.h new file mode 100644 index 0000000..ca5b971 --- /dev/null +++ b/src/Schachbrett.h @@ -0,0 +1,8 @@ +#ifndef SCHACHBRETT_H +#define SCHACHBRETT_H + +char** Schachbrett_erstellen(); +void print_Schachfeld(char** Brett, int Reihen, int Spalten) +void Schachbrettspeicher_freigeben(char** Brett, int Reihen); + +#endif // SCHACHBRETT_H diff --git a/src/Spieler.h b/src/Spieler.h new file mode 100644 index 0000000..dfab50c --- /dev/null +++ b/src/Spieler.h @@ -0,0 +1,9 @@ +#ifndef Spieler +#define Spieler + +typedef enum { + PLAYER_WHITE, + PLAYER_BLACK +} Player; + +#endif // Spieler diff --git a/src/main.c b/src/main.c index 62113e5..5b6b7db 100644 --- a/src/main.c +++ b/src/main.c @@ -1,10 +1,9 @@ #include #include -#include "schach.h" int main() { - int x = 8; +/* int x = 8; int y = 8; int spieler = 0; char** Spielfeld = create_Schachfeld(x, y); @@ -22,4 +21,5 @@ int main() { free_Schachfeld(Spielfeld, x); return 0; + */ } diff --git a/src/main.h b/src/main.h deleted file mode 100644 index 7f696ff..0000000 --- a/src/main.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef MAIN -#define MAIN - - -int main(); - - - -#endif diff --git a/src/schach.c b/src/schach.c deleted file mode 100644 index eaeca25..0000000 --- a/src/schach.c +++ /dev/null @@ -1,195 +0,0 @@ -#include -#include - -#include "main.h" - -/* - Spielablauf: - 1. Ausgabe vom Spielfeld - 2. Weiß nach Figur für Zug fragen - 3. Weiß nach Ziel der Figur fragen - 4. Überprüfen ob Eingabe möglich ist - 4.1. falls nicht Schritt 2,3 und 4 Wiederholen - 4.2. Schach überprüfen bzw Schachmatt - 5. Figur bewegen - 5.1. falls gegnerische Figur -> Schlagen - 6. Wiederholung von 1-5 für Schwarz - - - Eingaben sind Koordinaten - - Programmablauf: - 1.Spielfeld in der create_Schachfeld erstellen - 1.1 Schachfeld füllen - 2.Spielfeld anzeigen mit print_Schachfeld - 3.Eingabe mit choose_Figur - 3.1 erst x dann y - 4.Eingabe mit choose_destination_Figur - 4.1 erst x dann y - 5.Überprüfung der Figur mit check_Figur - 5.1.bsp.: Eingabe choose_Figur x=0 y=0 temp. char welcher die eingabe des Spielfeldarray - an der Stelle 0 0 speichert - 5.2. if abfrage welche Figur da steht - 5.2.1. wechsel in die seperaten Figuren-Funktionen(Datein) - 5.3. Prüfen ob schwarz oder weiß durch groß und kleinschreibung - 6.In den seperaten Figuren-Funktionen wird überprüft ob der Zug möglich ist - 6.1 wenn möglich wird die Figur an die stelle gesetzt - 6.2 wenn es nicht möglich ist dann wird Schritt 2-6 wiederholt - 7.(Schachmatt wird in check_checkmate überprüft) - 8.Schritt 2-8 wird Wiederholt - -*/ -int checkmate(){ - return 0; -} - - - -int read_input(){ - - int koordinate = 0; - - scanf("%d", &koordinate); - - if(koordinate < 9){ - return koordinate - 1; - } - else{ - - read_input(); - - } - -} - -void choose_Figur(char active_Player, char** spielfeld){ - - int x,y; - - printf("Spieler %c ist an der Reihe!\nX-Koordinaten der Figur die bewegt werden soll eingeben:\n", active_Player); - - - x = read_input(); - - printf("X-Koordinaten der Figur der bewegt werden soll eingeben:\n"); - - y = read_input(); - - char ausgewählte_Figur = spielfeld[x][y]; - - if (active_Player == 'w'){ - switch(ausgewählte_Figur){ - case 'D' : - //dame.c; - break; - case 'K' : - //könig.c; - break; - case 'L' : - //läufer.c; - break; - case 'T' : - //turm.c; - break; - case 'P' : - //pferd.c; - break; - case 'B' : - //bauer.c; - break; - default : - printf("Wrong Input"); - choose_Figur(active_Player,spielfeld); - break; - } - - }else{ - switch(ausgewählte_Figur){ - case 'd' : - //dame.c; - break; - case 'k' : - //könig.c; - break; - case 'l' : - //läufer.c; - break; - case 't' : - //turm.c; - break; - case 'p' : - //pferd.c; - break; - case 'b' : - //bauer.c; - break; - default : - printf("Wrong Input"); - choose_Figur(active_Player,spielfeld); - break; - - } - } -} - -void print_Schachfeld(char** Spielfeld, int x, int y) { - for (int i = 0; i < x; i++) { - for (int j = 0; j < y; j++) { - printf(" %c ", Spielfeld[i][j]); - } - printf ("\n"); - } -} - -char** create_Schachfeld(int x, int y) { - char** Spielfeld = (char**)malloc(x * sizeof(char*)); - - for (int i = 0; i < x; i++) { - Spielfeld[i] = (char*)malloc(y * sizeof(char)); - - for (int j = 0; j < y; j++) { - if ((i + j) % 2 == 0) { - Spielfeld[i][j] = 'W'; - } else { - Spielfeld[i][j] = 'S'; - } - } - } - - Spielfeld[0][0] = 'T'; //Turm Weiß - Spielfeld[0][1] = 'P'; //Pferd Weiß - Spielfeld[0][2] = 'L'; //Laufer Weiß - Spielfeld[0][3] = 'D'; //Dame Weiß - Spielfeld[0][4] = 'K'; //König Weiß - Spielfeld[0][5] = 'L'; - Spielfeld[0][6] = 'P'; - Spielfeld[0][7] = 'T'; - - for(int l = 0;l<8;l++){ // Bauern Weiß - Spielfeld[1][l] = 'B'; - } - - Spielfeld[7][0] = 't'; //Turm Schwarz - Spielfeld[7][1] = 'p'; - Spielfeld[7][2] = 'l'; - Spielfeld[7][3] = 'd'; - Spielfeld[7][4] = 'k'; - Spielfeld[7][5] = 'l'; - Spielfeld[7][6] = 'p'; - Spielfeld[7][7] = 't'; - - for(int l = 0;l<8;l++){ //Bauern Schwarz - Spielfeld[6][l] = 'b'; - } - - return Spielfeld; -} - -void free_Schachfeld(char** Spielfeld, int x) { - for (int i = 0; i < x; i++) { - free(Spielfeld[i]); - } - free(Spielfeld); -} - - diff --git a/src/schach.exe b/src/schach.exe deleted file mode 100644 index b168a8e..0000000 Binary files a/src/schach.exe and /dev/null differ diff --git a/src/schach.h b/src/schach.h deleted file mode 100644 index 2394525..0000000 --- a/src/schach.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef SCHACH -#define SCHACH - -#include "main.h" - -void print_Schachfeld(char** , int , int ); -char** create_Schachfeld(int , int ); -void free_Schachfeld(char** , int ); -int checkmate(); -int read_input(); -void choose_Figur(char, char**); - - - -#endif diff --git a/team.md b/team.md index 584424f..db2a0b6 100644 --- a/team.md +++ b/team.md @@ -1,3 +1,3 @@ - Luis Hahn, fdai7834 - Hendrik Voß, fdai 7723 -- Anton Lohrey, fdai7492 \ No newline at end of file +- Anton Lohrey, fdai7492 diff --git a/temp_input.txt b/temp_input.txt deleted file mode 100644 index 45a4fb7..0000000 --- a/temp_input.txt +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/test/test_Input.c b/test/test_Input.c new file mode 100644 index 0000000..4bfc22c --- /dev/null +++ b/test/test_Input.c @@ -0,0 +1,45 @@ +#ifdef TEST +#include +#include "unity.h" +#include "Input.h" + + +void setUp(void) { +} + +void tearDown(void) { +} + +void test_getUserInput(void) { + /*Bei dem benutzen dieser Funktion muss man mit free() den speicher wieder freigeben um memory leaks zu vermeiden + Beispiel : + + char* input = getUserInput(); + if (input != NULL) { + + input wird hier benutzt + + + free(input); damit wird der speicher wieder freigegeben wird + + */ + const char *test_input = "a1"; + FILE *tempInputFile; + // Datei erstellen + tempInputFile = fopen("temp_input.txt", "w"); + fprintf(tempInputFile, "%s\n", test_input); + fclose(tempInputFile); + + // aus der Datei lesen um User input zu simulieren + tempInputFile = freopen("temp_input.txt", "r", stdin); + + + char *actual_input = getUserInput(); + TEST_ASSERT_EQUAL_STRING(test_input, actual_input); + + //Clean-up + free(actual_input); // siehe kommentar in input.c + fclose(tempInputFile); + remove("temp_input.txt"); // Datei automatisch löschen +} +#endif // TEST diff --git a/test/test_Schachbrett.c b/test/test_Schachbrett.c new file mode 100644 index 0000000..3a94210 --- /dev/null +++ b/test/test_Schachbrett.c @@ -0,0 +1,26 @@ +#ifdef TEST +#include "unity.h" +#include "Schachbrett.h" + +void setUp(void) { +} + +void tearDown(void) { +} + +void test_Schachbrett_erstellen(void) { + char** brett = Schachbrett_erstellen(); + + TEST_ASSERT_NOT_NULL(brett); + + // Testen von ein Paar Positionen + TEST_ASSERT_EQUAL('R', brett[0][0]); + TEST_ASSERT_EQUAL('p', brett[6][0]); + TEST_ASSERT_EQUAL(' ', brett[4][4]); + + for (int i = 0; i < 8; i++) { + free(brett[i]); + } + free(brett); +} +#endif // TEST diff --git a/test/test_schach.c b/test/test_schach.c deleted file mode 100644 index 57d77c3..0000000 --- a/test/test_schach.c +++ /dev/null @@ -1,107 +0,0 @@ -#ifdef TEST - -#include "unity.h" - -#include "schach.h" - -#include "string.h" -void setUp(void) -{ -} - -void tearDown(void) -{ -} - -void test_print_Schachfeld(void){ - /* arrange */ - char expected = 'S'; - int x = 8; - int y = 8; - - /* act */ - char** Spielfeld = create_Schachfeld(x, y); - - /* assert */ - TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[5][0]); - TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[4][3]); -} - -void test_print_Schachfeld_Turm_weiss(void){ - /* arrange */ - char expected = 'T'; - int x = 8; - int y = 8; - - /* act */ - char** Spielfeld = create_Schachfeld(x, y); - - /* assert */ - TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[0][0]); - TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[0][7]); -} - -void test_print_Schachfeld_Bauern_weiss(void){ - /* arrange */ - char expected = 'B'; - int x = 8; - int y = 8; - - /* act */ - char** Spielfeld = create_Schachfeld(x, y); - - /* assert */ - for(int l = 0;l