diff --git a/build-project.sh b/build-project.sh new file mode 100644 index 0000000..49c80d8 --- /dev/null +++ b/build-project.sh @@ -0,0 +1,3 @@ +#!/bin/bash +ceedling test:all +bash \ No newline at end of file diff --git a/build/test/cache/defines_dependency.yml b/build/test/cache/defines_dependency.yml new file mode 100644 index 0000000..1099772 --- /dev/null +++ b/build/test/cache/defines_dependency.yml @@ -0,0 +1,3 @@ +--- +src/schach.c: +- TEST diff --git a/build/test/cache/input.yml b/build/test/cache/input.yml new file mode 100644 index 0000000..bd75b60 --- /dev/null +++ b/build/test/cache/input.yml @@ -0,0 +1,242 @@ +--- +: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/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor + :defines: [] +:cmock: + :vendor_path: C:/Ruby30/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/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/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/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report + :module_generator_path: C:/Ruby30/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 new file mode 100644 index 0000000..4a8462d --- /dev/null +++ b/build/test/cache/test_schach.c @@ -0,0 +1,59 @@ +#include "src/schach.h" +#include "C:/Ruby30/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[0][7])), ( + + ((void *)0) + + ), (UNITY_UINT)(25), UNITY_DISPLAY_STYLE_CHAR); + + UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[1][0])), ( + + ((void *)0) + + ), (UNITY_UINT)(26), UNITY_DISPLAY_STYLE_CHAR); + +} diff --git a/build/test/dependencies/cmock.d b/build/test/dependencies/cmock.d new file mode 100644 index 0000000..a9317fd --- /dev/null +++ b/build/test/dependencies/cmock.d @@ -0,0 +1,6 @@ +build/test/out/c/cmock.o: \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/schach.d b/build/test/dependencies/schach.d new file mode 100644 index 0000000..5d25a68 --- /dev/null +++ b/build/test/dependencies/schach.d @@ -0,0 +1 @@ +build/test/out/c/schach.o: src/schach.c diff --git a/build/test/dependencies/test_schach.d b/build/test/dependencies/test_schach.d new file mode 100644 index 0000000..fcec89b --- /dev/null +++ b/build/test/dependencies/test_schach.d @@ -0,0 +1,4 @@ +build/test/out/c/test_schach.o: test/test_schach.c \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/schach.h diff --git a/build/test/dependencies/test_schach_runner.d b/build/test/dependencies/test_schach_runner.d new file mode 100644 index 0000000..4b8c6f3 --- /dev/null +++ b/build/test/dependencies/test_schach_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_schach_runner.o: \ + build/test/runners/test_schach_runner.c \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/unity.d b/build/test/dependencies/unity.d new file mode 100644 index 0000000..25fa920 --- /dev/null +++ b/build/test/dependencies/unity.d @@ -0,0 +1,4 @@ +build/test/out/c/unity.o: \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/out/c/cmock.o b/build/test/out/c/cmock.o new file mode 100644 index 0000000..f147b87 Binary files /dev/null and b/build/test/out/c/cmock.o differ diff --git a/build/test/out/c/schach.o b/build/test/out/c/schach.o new file mode 100644 index 0000000..5c3adb3 Binary files /dev/null and b/build/test/out/c/schach.o differ diff --git a/build/test/out/c/test_schach.o b/build/test/out/c/test_schach.o new file mode 100644 index 0000000..fcd49e4 Binary files /dev/null and b/build/test/out/c/test_schach.o differ diff --git a/build/test/out/c/test_schach_runner.o b/build/test/out/c/test_schach_runner.o new file mode 100644 index 0000000..96c8e2e Binary files /dev/null and b/build/test/out/c/test_schach_runner.o differ diff --git a/build/test/out/c/unity.o b/build/test/out/c/unity.o new file mode 100644 index 0000000..cd084ef Binary files /dev/null and b/build/test/out/c/unity.o differ diff --git a/build/test/out/test_schach.out b/build/test/out/test_schach.out new file mode 100644 index 0000000..5a8c580 Binary files /dev/null and b/build/test/out/test_schach.out differ diff --git a/build/test/preprocess/files/test_schach.c b/build/test/preprocess/files/test_schach.c new file mode 100644 index 0000000..4a8462d --- /dev/null +++ b/build/test/preprocess/files/test_schach.c @@ -0,0 +1,59 @@ +#include "src/schach.h" +#include "C:/Ruby30/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[0][7])), ( + + ((void *)0) + + ), (UNITY_UINT)(25), UNITY_DISPLAY_STYLE_CHAR); + + UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[1][0])), ( + + ((void *)0) + + ), (UNITY_UINT)(26), UNITY_DISPLAY_STYLE_CHAR); + +} diff --git a/build/test/preprocess/includes/test_schach.c b/build/test/preprocess/includes/test_schach.c new file mode 100644 index 0000000..2b6bf90 --- /dev/null +++ b/build/test/preprocess/includes/test_schach.c @@ -0,0 +1,3 @@ +--- +- C:/Ruby30/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h +- src/schach.h diff --git a/build/test/results/test_schach.pass b/build/test/results/test_schach.pass new file mode 100644 index 0000000..5d21e1e --- /dev/null +++ b/build/test/results/test_schach.pass @@ -0,0 +1,18 @@ +--- +:source: + :path: test + :file: test_schach.c +:successes: +- :test: test_print_Schachfeld + :line: 15 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 1 + :passed: 1 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.13277340000058757 diff --git a/build/test/runners/test_schach_runner.c b/build/test/runners/test_schach_runner.c new file mode 100644 index 0000000..7f30dfb --- /dev/null +++ b/build/test/runners/test_schach_runner.c @@ -0,0 +1,81 @@ +/* AUTOGENERATED FILE. DO NOT EDIT. */ + +/*=======Automagically Detected Files To Include=====*/ +#include "unity.h" + +int GlobalExpectCount; +int GlobalVerifyOrder; +char* GlobalOrderError; + +/*=======External Functions This Runner Calls=====*/ +extern void setUp(void); +extern void tearDown(void); +extern void test_print_Schachfeld(void); + + +/*=======Mock Management=====*/ +static void CMock_Init(void) +{ + GlobalExpectCount = 0; + GlobalVerifyOrder = 0; + GlobalOrderError = NULL; +} +static void CMock_Verify(void) +{ +} +static void CMock_Destroy(void) +{ +} + +/*=======Test Reset Options=====*/ +void resetTest(void); +void resetTest(void) +{ + tearDown(); + CMock_Verify(); + CMock_Destroy(); + CMock_Init(); + setUp(); +} +void verifyTest(void); +void verifyTest(void) +{ + CMock_Verify(); +} + +/*=======Test Runner Used To Run Each Test=====*/ +static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE line_num) +{ + Unity.CurrentTestName = name; + Unity.CurrentTestLineNumber = line_num; +#ifdef UNITY_USE_COMMAND_LINE_ARGS + if (!UnityTestMatches()) + return; +#endif + Unity.NumberOfTests++; + UNITY_CLR_DETAILS(); + UNITY_EXEC_TIME_START(); + CMock_Init(); + if (TEST_PROTECT()) + { + setUp(); + func(); + } + if (TEST_PROTECT()) + { + tearDown(); + CMock_Verify(); + } + CMock_Destroy(); + UNITY_EXEC_TIME_STOP(); + UnityConcludeTest(); +} + +/*=======MAIN=====*/ +int main(void) +{ + UnityBegin("test_schach.c"); + run_test(test_print_Schachfeld, "test_print_Schachfeld", 15); + + return UnityEnd(); +} diff --git a/src/schach.c b/src/schach.c new file mode 100644 index 0000000..4370698 --- /dev/null +++ b/src/schach.c @@ -0,0 +1,87 @@ +#include +#include + +/* + 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 + 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 + +*/ + +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'; + } + } + } + return Spielfeld; +} + +void free_Schachfeld(char** Spielfeld, int x) { + for (int i = 0; i < x; i++) { + free(Spielfeld[i]); + } + free(Spielfeld); +} + + +/* +int main() { + int x = 8; + int y = 8; + + char** Spielfeld = create_Schachfeld(x, y); + print_Schachfeld(Spielfeld, x, y); + + free_Schachfeld(Spielfeld, x); + + return 0; +} + +*/ \ No newline at end of file diff --git a/src/schach.exe b/src/schach.exe new file mode 100644 index 0000000..b168a8e Binary files /dev/null and b/src/schach.exe differ diff --git a/src/schach.h b/src/schach.h new file mode 100644 index 0000000..3f6fb6e --- /dev/null +++ b/src/schach.h @@ -0,0 +1,8 @@ +#ifndef SCHACH +#define SCHACH + +void print_Schachfeld(char** , int , int ); +char** create_Schachfeld(int , int ); +void free_Schachfeld(char** , int ); + +#endif \ No newline at end of file diff --git a/team.md b/team.md new file mode 100644 index 0000000..f3f5d6e --- /dev/null +++ b/team.md @@ -0,0 +1 @@ +Luis Hahn, fdai7834 diff --git a/test/test_schach.c b/test/test_schach.c new file mode 100644 index 0000000..35a1190 --- /dev/null +++ b/test/test_schach.c @@ -0,0 +1,29 @@ +#ifdef TEST + +#include "unity.h" + +#include "schach.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[0][7]); + TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[1][0]); +} + +#endif // TEST