Browse Source

Print Schachfeld mit Test, Luis Hahn

remotes/origin/Läufer-fertig,-Hendrik-Voß
Luis Hahn 11 months ago
parent
commit
2aa69a3242
  1. 3
      build-project.sh
  2. 3
      build/test/cache/defines_dependency.yml
  3. 242
      build/test/cache/input.yml
  4. 59
      build/test/cache/test_schach.c
  5. 6
      build/test/dependencies/cmock.d
  6. 1
      build/test/dependencies/schach.d
  7. 4
      build/test/dependencies/test_schach.d
  8. 4
      build/test/dependencies/test_schach_runner.d
  9. 4
      build/test/dependencies/unity.d
  10. BIN
      build/test/out/c/cmock.o
  11. BIN
      build/test/out/c/schach.o
  12. BIN
      build/test/out/c/test_schach.o
  13. BIN
      build/test/out/c/test_schach_runner.o
  14. BIN
      build/test/out/c/unity.o
  15. BIN
      build/test/out/test_schach.out
  16. 59
      build/test/preprocess/files/test_schach.c
  17. 3
      build/test/preprocess/includes/test_schach.c
  18. 18
      build/test/results/test_schach.pass
  19. 81
      build/test/runners/test_schach_runner.c
  20. 87
      src/schach.c
  21. BIN
      src/schach.exe
  22. 8
      src/schach.h
  23. 1
      team.md
  24. 29
      test/test_schach.c

3
build-project.sh

@ -0,0 +1,3 @@
#!/bin/bash
ceedling test:all
bash

3
build/test/cache/defines_dependency.yml

@ -0,0 +1,3 @@
---
src/schach.c:
- TEST

242
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/

59
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);
}

6
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

1
build/test/dependencies/schach.d

@ -0,0 +1 @@
build/test/out/c/schach.o: src/schach.c

4
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

4
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

4
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

BIN
build/test/out/c/cmock.o

BIN
build/test/out/c/schach.o

BIN
build/test/out/c/test_schach.o

BIN
build/test/out/c/test_schach_runner.o

BIN
build/test/out/c/unity.o

BIN
build/test/out/test_schach.out

59
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);
}

3
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

18
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

81
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();
}

87
src/schach.c

@ -0,0 +1,87 @@
#include <stdlib.h>
#include <stdio.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
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;
}
*/

BIN
src/schach.exe

8
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

1
team.md

@ -0,0 +1 @@
Luis Hahn, fdai7834

29
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
Loading…
Cancel
Save