From dbff9b5a1d0c5c6dd553742a9af15b41256ceef1 Mon Sep 17 00:00:00 2001
From: fdai7057 <julius-philipp.engel@informatik.hs-fulda.de>
Date: Thu, 19 Jan 2023 15:29:01 +0100
Subject: [PATCH] implementation of unit tests for generateCheckString()

---
 src/StringManipulation.c                      |  21 +-
 src/StringManipulation.h                      |   2 +
 tests/build/test/cache/defines_dependency.yml |   3 +
 tests/build/test/cache/input.yml              | 242 ++++++++++++++++++
 .../test/cache/test_StringManipulation.c      | 195 ++++++++++++++
 .../test/dependencies/StringManipulation.d    |   3 +
 tests/build/test/dependencies/cmock.d         |   6 +
 .../dependencies/test_StringManipulation.d    |   5 +
 .../test_StringManipulation_runner.d          |   4 +
 tests/build/test/dependencies/unity.d         |   4 +
 tests/build/test/out/c/StringManipulation.o   | Bin 0 -> 4384 bytes
 tests/build/test/out/c/cmock.o                | Bin 0 -> 8152 bytes
 .../test/out/c/test_StringManipulation.o      | Bin 0 -> 10300 bytes
 .../out/c/test_StringManipulation_runner.o    | Bin 0 -> 7004 bytes
 tests/build/test/out/c/unity.o                | Bin 0 -> 39856 bytes
 .../test/out/test_StringManipulation.out      | Bin 0 -> 59008 bytes
 .../files/test_StringManipulation.c           | 195 ++++++++++++++
 .../includes/test_StringManipulation.c        |   3 +
 .../test/results/test_StringManipulation.pass |  42 +++
 .../runners/test_StringManipulation_runner.c  |  89 +++++++
 tests/project.yml                             | 101 ++++++++
 tests/test/test_StringManipulation.c          |  55 +++-
 22 files changed, 964 insertions(+), 6 deletions(-)
 create mode 100644 tests/build/test/cache/defines_dependency.yml
 create mode 100644 tests/build/test/cache/input.yml
 create mode 100644 tests/build/test/cache/test_StringManipulation.c
 create mode 100644 tests/build/test/dependencies/StringManipulation.d
 create mode 100644 tests/build/test/dependencies/cmock.d
 create mode 100644 tests/build/test/dependencies/test_StringManipulation.d
 create mode 100644 tests/build/test/dependencies/test_StringManipulation_runner.d
 create mode 100644 tests/build/test/dependencies/unity.d
 create mode 100644 tests/build/test/out/c/StringManipulation.o
 create mode 100644 tests/build/test/out/c/cmock.o
 create mode 100644 tests/build/test/out/c/test_StringManipulation.o
 create mode 100644 tests/build/test/out/c/test_StringManipulation_runner.o
 create mode 100644 tests/build/test/out/c/unity.o
 create mode 100755 tests/build/test/out/test_StringManipulation.out
 create mode 100644 tests/build/test/preprocess/files/test_StringManipulation.c
 create mode 100644 tests/build/test/preprocess/includes/test_StringManipulation.c
 create mode 100644 tests/build/test/results/test_StringManipulation.pass
 create mode 100644 tests/build/test/runners/test_StringManipulation_runner.c
 create mode 100644 tests/project.yml

diff --git a/src/StringManipulation.c b/src/StringManipulation.c
index 2863f93..6f671da 100644
--- a/src/StringManipulation.c
+++ b/src/StringManipulation.c
@@ -4,7 +4,10 @@ char *to_string(int number)
 {
 	if(number==0)
 	{
-		return "0\0";
+		char *str = calloc(2,sizeof(char));
+		*(str) = '0';
+		*(str+1) = '\0';
+		return str;
 	}
 	else
 	{
@@ -22,3 +25,19 @@ char *to_string(int number)
 	return str;
 	}
 }
+
+char *generateCheckString(int ID, char *password)
+{
+	char *IDString = to_string(ID);
+	int IDLength = strlen(IDString);
+	int passwordLength = strlen(password);
+	/*the checkString has this form: ID=password, so in order to calculate its length the length of the ID, one byte for the =, the length of the password and
+	 * one byte for '\0' are needed.*/
+	int checkStringLength = IDLength + 1 + passwordLength + 1;
+	char *checkString = calloc(checkStringLength, sizeof(char));
+	checkString = strcat(IDString, "=");
+	checkString = strcat(checkString, password);
+	*(checkString+checkStringLength) = '\0';
+	return checkString;:w
+
+}
diff --git a/src/StringManipulation.h b/src/StringManipulation.h
index 88f06a4..d1a8b35 100644
--- a/src/StringManipulation.h
+++ b/src/StringManipulation.h
@@ -1,3 +1,5 @@
 #include <stdlib.h>
 #include <stdio.h>
+#include <string.h>
 char *to_string(int);
+char *generateCheckString(int, char *);
diff --git a/tests/build/test/cache/defines_dependency.yml b/tests/build/test/cache/defines_dependency.yml
new file mode 100644
index 0000000..551c1ff
--- /dev/null
+++ b/tests/build/test/cache/defines_dependency.yml
@@ -0,0 +1,3 @@
+---
+"/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.c":
+- TEST
diff --git a/tests/build/test/cache/input.yml b/tests/build/test/cache/input.yml
new file mode 100644
index 0000000..fb9e794
--- /dev/null
+++ b/tests/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:
+  - "/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/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: "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor"
+  :defines: []
+:cmock:
+  :vendor_path: "/var/lib/gems/2.7.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: "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor"
+  :defines: []
+:test_runner:
+  :includes: []
+  :file_suffix: _runner
+:tools:
+  :test_compiler:
+    :executable: gcc
+    :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
+    :name: default_test_linker
+    :stderr_redirect: :none
+    :background_exec: :none
+    :optional: false
+    :arguments:
+    - ''
+    - ''
+    - ''
+    - '"${1}"'
+    - "${5}"
+    - -o "${2}"
+    - ''
+    - "${4}"
+    - ''
+  :test_file_preprocessor:
+    :executable: gcc
+    :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
+    :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
+    :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:
+  - "/var/lib/gems/2.7.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: "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report"
+  :module_generator_path: "/var/lib/gems/2.7.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/tests/build/test/cache/test_StringManipulation.c b/tests/build/test/cache/test_StringManipulation.c
new file mode 100644
index 0000000..0d87c99
--- /dev/null
+++ b/tests/build/test/cache/test_StringManipulation.c
@@ -0,0 +1,195 @@
+#include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.h"
+#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
+
+
+
+
+
+
+void test_to_string()
+
+{
+
+
+
+ char *result_1[] = {"0","1","2","3","4","5","6","7","8","9","10"};
+
+ char *result_2[] = {"500","502","504","506","508","510","512","514","516","518"};
+
+ char *result_3[] = {"1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"};
+
+ char *result_4[] = {"9999","8999","7999","6999","5999","4999","3999","2999","1999","999"};
+
+ char *result_5[] = {"1000000","2000000","3000000","4000000","5000000","6000000","7000000",
+
+       "8000000","9000000","10000000"};
+
+
+
+ for(int i=0;i<=10;++i){
+
+  UnityAssertEqualString((const char*)((result_1[i])), (const char*)((to_string(i))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(17));
+
+ }
+
+
+
+ for(int i=0, j=500;i<10;++i,j+=2){
+
+  UnityAssertEqualString((const char*)((result_2[i])), (const char*)((to_string(j))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(21));
+
+ }
+
+
+
+ for(int i=0, j=1000;i<10;++i,j+=1000){
+
+  UnityAssertEqualString((const char*)((result_3[i])), (const char*)((to_string(j))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(25));
+
+ }
+
+
+
+ for(int i=0, j=9999;i<10;++i,j-=1000){
+
+  UnityAssertEqualString((const char*)((result_4[i])), (const char*)((to_string(j))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(29));
+
+ }
+
+ for(int i=0, j=1000000;i<10;++i,j+=1000000){
+
+  UnityAssertEqualString((const char*)((result_5[i])), (const char*)((to_string(j))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(32));
+
+ }
+
+
+
+}
+
+
+
+
+
+void test_generateCheckString()
+
+{
+
+
+
+ int numbers_1[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
+
+ char *strings_1[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
+
+ char *result_1[] = {"0=a","1=b","2=c","3=d","4=e","5=f","6=g","7=h","8=i","9=j","10=k","11=l","12=m","13=n","14=o","15=p","16=q","17=r", "18=s","19=t","20=u","21=v","22=w","23=x","24=y","25=z"};
+
+ for(int i=0;i<26;++i){
+
+  UnityAssertEqualString((const char*)((result_1[i])), (const char*)((generateCheckString(numbers_1[i],*(strings_1+i)))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(45));
+
+ }
+
+
+
+ int numbers_2[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025};
+
+ char *strings_2[] = {"z","zy","zyx","zyxw","zyxwv","zyxwvu","zyxwvut","zyxwvuts","zyxwvutsr","zyxwvutsrq","zyxwvutsrqp",
+
+        "zyxwvutsrqpo","zyxwvutsrqpon","zyxwvutsrqponm","zyxwvutsrqponml","zyxwvutsrqponmlk",
+
+        "zyxwvutsrqponmlkj","zyxwvutsrqponmlkji","zyxwvutsrqponmlkjih","zyxwvutsrqponmlkjihg","zyxwvutsrqponmlkjihgf",
+
+         "zyxwvutsrqponmlkjihgfe","zyxwvutsrqponmlkjihgfed","zyxwvutsrqponmlkjihgfedc","zyxwvutsrqponmlkjihgfedcb",
+
+         "zyxwvutsrqponmlkjihgfedcba"};
+
+ char *result_2[] = {"0=z","1=zy","1=zyx","2=zyxw","3=zyxwv","5=zyxwvu","8=zyxwvut","13=zyxwvuts","21=zyxwvutsr","34=zyxwvutsrq",
+
+                     "55=zyxwvutsrqp","89=zyxwvutsrqpo","144=zyxwvutsrqpon","233=zyxwvutsrqponm","377=zyxwvutsrqponml",
+
+       "610=zyxwvutsrqponmlk","987=zyxwvutsrqponmlkj","1597=zyxwvutsrqponmlkji","2584=zyxwvutsrqponmlkjih",
+
+       "4181=zyxwvutsrqponmlkjihg","6765=zyxwvutsrqponmlkjihgf","10946=zyxwvutsrqponmlkjihgfe",
+
+       "17711=zyxwvutsrqponmlkjihgfed","28657=zyxwvutsrqponmlkjihgfedc","46368=zyxwvutsrqponmlkjihgfedcb",
+
+       "75025=zyxwvutsrqponmlkjihgfedcba"};
+
+ for(int i=0;i<26;++i){
+
+  UnityAssertEqualString((const char*)((result_2[i])), (const char*)((generateCheckString(numbers_2[i],*(strings_2+i)))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(61));
+
+ }
+
+
+
+ srand(time(0));
+
+ int random_number=0;
+
+ char *random_numbers_strings[20];
+
+ int random_numbers[20];
+
+ for(int i=0;i<20;++i){
+
+  random_number = (rand() % 100) + 1;
+
+  random_numbers_strings[i] = to_string(random_number);
+
+  random_numbers[i] = random_number;
+
+ }
+
+ char *strings_3[] = {"tree","plant","tea","programming","assembler","unix","BSD","snow","mountain","table","wood","forest", "calculator","book","light","keyboard","old","paper","pencil","voltage"};
+
+ char *result_3[20];
+
+ for(int i=0;i<20;++i){
+
+  random_numbers_strings[i] = strcat(random_numbers_strings[i],"=");
+
+  result_3[i] = strcat(random_numbers_strings[i],strings_3[i]);
+
+  printf("%s\n",result_3[i]);
+
+ }
+
+ for(int i=0;i<20;++i){
+
+  UnityAssertEqualString((const char*)((result_3[i])), (const char*)((generateCheckString(random_numbers[i],strings_3[i]))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(81));
+
+ }
+
+}
diff --git a/tests/build/test/dependencies/StringManipulation.d b/tests/build/test/dependencies/StringManipulation.d
new file mode 100644
index 0000000..625c690
--- /dev/null
+++ b/tests/build/test/dependencies/StringManipulation.d
@@ -0,0 +1,3 @@
+build/test/out/c/StringManipulation.o: \
+ /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.c \
+ /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.h
diff --git a/tests/build/test/dependencies/cmock.d b/tests/build/test/dependencies/cmock.d
new file mode 100644
index 0000000..82b64c9
--- /dev/null
+++ b/tests/build/test/dependencies/cmock.d
@@ -0,0 +1,6 @@
+build/test/out/c/cmock.o: \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h
diff --git a/tests/build/test/dependencies/test_StringManipulation.d b/tests/build/test/dependencies/test_StringManipulation.d
new file mode 100644
index 0000000..2f65b3c
--- /dev/null
+++ b/tests/build/test/dependencies/test_StringManipulation.d
@@ -0,0 +1,5 @@
+build/test/out/c/test_StringManipulation.o: \
+ test/test_StringManipulation.c \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \
+ /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.h
diff --git a/tests/build/test/dependencies/test_StringManipulation_runner.d b/tests/build/test/dependencies/test_StringManipulation_runner.d
new file mode 100644
index 0000000..c54fbb6
--- /dev/null
+++ b/tests/build/test/dependencies/test_StringManipulation_runner.d
@@ -0,0 +1,4 @@
+build/test/out/c/test_StringManipulation_runner.o: \
+ build/test/runners/test_StringManipulation_runner.c \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h
diff --git a/tests/build/test/dependencies/unity.d b/tests/build/test/dependencies/unity.d
new file mode 100644
index 0000000..02f2997
--- /dev/null
+++ b/tests/build/test/dependencies/unity.d
@@ -0,0 +1,4 @@
+build/test/out/c/unity.o: \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
+ /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h
diff --git a/tests/build/test/out/c/StringManipulation.o b/tests/build/test/out/c/StringManipulation.o
new file mode 100644
index 0000000000000000000000000000000000000000..531a498d6d4ebdfe69f990feb9684a617365fc45
GIT binary patch
literal 4384
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

literal 0
HcmV?d00001

diff --git a/tests/build/test/out/c/cmock.o b/tests/build/test/out/c/cmock.o
new file mode 100644
index 0000000000000000000000000000000000000000..162be594be8e993b0d9cd86d186661c8be1c8c4d
GIT binary patch
literal 8152
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
Cqqz<M

literal 0
HcmV?d00001

diff --git a/tests/build/test/out/c/test_StringManipulation.o b/tests/build/test/out/c/test_StringManipulation.o
new file mode 100644
index 0000000000000000000000000000000000000000..4e6507a6378a47120c989cf7de1d91c904af42a4
GIT binary patch
literal 10300
zcma)BdvKIhmcRW<nh+p7)SxKsh>8l`>CO|SR~~608Z{%qWgKQgC;g?nlYWGLKtPB%
zO_WS*7fP7LS=M2uT%~r|9o=!J(9szbo#5!!rdGyD&8BMe2UCR$YdJMkjXUeg{(iU5
zmvjfP_Evu1@0@$iJ@<XT+h3jtwBBd2Sd^J8%BH3?rFJbTSn4z_Rn_V`ZFfT7IQ07s
zPhPkP>D(8WE?s)^loet=_q1K9p}?_xZb%Eq^SNOyypqr5weVU#_g7jtk<T5_!khWr
zb6Pl=&mGdjyZPK-YvFW0_q-N9%;)|_3#0km3tHHd&;3XXd-J)Mw6HIq`+F@slh6H=
z7WU_J|Ez_B`P|R6a5$fPLkmapxnF4EXg>Fj7GBKfennw$6S|YneW2ydS{~K%7A^lq
z%ONfQPRkK3|A&@iT0X1gJ}rNu<&2g;)pEa<|ET3%TK;b>*J$}mE!Sz;=3sl8wCvRK
zN-fXQ@+vLQ({i(xuha5+Eick?tCnxpa+{WK({j6(@6@tW%RVhvYWZ$0S7~{TmKSLG
zel1sP`4KHI((+?kc4@g&%S*J}qvfSqPHA}=<dFbZjXHmO?n33I>_xqNa_?3RZ@f6%
ze&|@w+#c2Th?$uST(snNU#uATXe96%ON|6BT*MMRf0r(N!Soy6_!$cC>A9w~@Mo4>
z;DR-``?DDX|2h&lR|s(SoDBiII>6bf0Oy7e9^%yZEG&(2&hlhH7s>5DH)G)ak-$VD
z%=nz!C&P?Sg_%GY&ScMxrC}y4PsYbtb8h#94l`B=b7s|=Ic96lOobUk7*0%&t2E3Q
zTBD2Pc8?*<{{6$>`r`dl*o=SqD7ND`;_Dc)9S0)_k$-Lv#{Tu|QQy$W(8quLyZoTi
z*=#^b_TewJcWL%W;4B@_uNw}W%`X_FTnJzp9j-#&@LpX@?t=4?wyE}?Mf(}9XL)J+
z&tf{yE*$ttey~PYrpl(Z;q?Eq4LoK_nzlt}?<viexnR>KCY#0pg{DoQX{=>h(>Oy6
z*W)j3+60<5fu><$^b|%Bs}jm&uSNo+?EOe!oOHghNQd5jWAWhmuMeI6(|-<)zWupl
z=+|%mdGQ^iy`!O_(|3&KPFjWnqk5^0P7TiZ(B4B;Xu)t`e0byN(80lzU!awNaWr6j
z{=l*PU>|f00*=(z7oe)bw2cJxk~tq64vY=IHpl=7{HPh$@>%zY@+%mJ3P!pe)S)Qt
zl>#NRG=_$_P*=f$QgMHCfibjbZ2rKrBY`uz%l_fOnaP-E5K}k2bmrlpWA=Q#ba>Ao
z)|vSOZ|&coH!gnj+a2FJ#gOcy!jZ>yp!i;?04jmmKou|#;22yBR0CYbi-4N|7w|P;
z32+;*6u1*u2DpJ5zz19{)xppNtOQm8&A@t~6=(z6fla_>AP95=y+9w31$F{Y0DFNU
z;91}~;4tvFz>k2JfvY99?Ktpb;3vQd;1|Gqz`p<=0~5e`;7@=Z%YPnlGvEc*0PR2+
zcpTUdyac=j{08_GaB_gJl5T<Rc3>Ic16Ba5f%}1WU<(ij9tXY)d>=Rt{1W&GI0t+Q
zT#IAJ1GE4k;7Q;pa1xjRu9hsA_%fgpr~(!Nw*hwn9-t2J18afxz{9{}KnGv|2_OaZ
z15W_cQ&4rPE)`M+W-hEEDyn)ge=!wT36;bwZdECjRvFCYHnm;#s~wop8h=oE{hi9^
z?^3n?kgD?=s@~tN8vJ3^=#Qu-e^jl&$>FW>_bRW~A5&hRKd!vB{)F<@`IE|9@9$II
z2LD#&ZS<#<x5=MY-WC3g^40jW%IEcOQ$C-6yYkig`<1WGzeD-z{X5l8RKBC1*sdSj
z3eT)i#^m&*keZUV7Kweua<W88lxp#5YHYgRds#-$<vGzSWJRu&7rtU<_my*vt7M0+
zmfv+%L+8~kK}`2fOg9Ff56lOj+cEK^ZJ2n?S<HGt$Z(=XOmi|#Ii+grrj)I!-Yl9)
zr?&Q~rWHlTJ}i>DV(-3W0?T14FiIp7aaG&cSW+qxkEsT%yU9AWTdY^DXu8a?7b~=W
z#TBxnSZ+<zDv!r{d!i9l=WQzLkOYSztQr~{O8SG==_287?1L3`4VN{ErMeC5fJSVQ
z>Fq5TLpXDq8tSjqM3xP8VgEPOHcXB@$8oA&*gI8YeGT^xrz)$*xzrw1nUrCuzF07k
zQ5hqs`clboDj1JP6JZrhr;T`L%t)zhBHFLkY-m>LL~^@|C$ou6Fq%-AAgpS8G8t0c
z$&``KsIFkFD;o=Dk}1`hOyVGkh9eo(YwYMu22&xGjD=KRun!UYj6_#7rnV(xnPAw!
zYsib&P_3#{^{PQN;+3-k!=~zM2p<4LO#{%R>Y49Fo)>vu<awLm3P&FwwS3g^fwDEK
zfsaN$n)q132c01zVa?&u$VUSo^?cOvQOk#q4=*2DU@;VAHDuOAW@Tj7M`o2|)=Fl@
zWY$gA)l-;Ecm?TqJYNGmqHz_~@A`5u-}f^BzVl}SeDBW!`0k$rQ~`4V-T~$Vya!wZ
z@Gfv2Pz@{uzACZ);x@2;*2{Vr>uW$G@C{%;@CmR31v>Fw`*$?jkBdn)8n_XSiR1F|
z4lWp;fKq=*;{NedwC`4n8eX*IlmXwuE68s7CCXRci2!C=%i9f-)n0xBY&N?iiX{nc
z1~jY1$(O&?TAm|W%5FkQtJU!`ZB9o_Q~6So-SH~OZr@sPe1mzF_IdQLviBg<@dYir
zZoHLp3-h19{wZeJ?f(cW+kg_5+sg82?9X7e9N`tA{9fkXQAXKzU}B(rC-pm>UuymH
z-Q{nisO2uv_wO!mp}j`@kL@boOWiB>laH7Gn*I%<kL@h~l=|v2UdyZp)|Y>e>Kf;4
zG{AOX-_G*GEWTEE+jii@j`C-zw}|~*fB8rBzhCsj{mxI&`bUvB2)`LoWm#5Hh`d=j
z_hJfYIx41>V%nsfe}*Xt)6d1!ET(ql<Zsi*Vft814~VHvRs0uBtuV2kHpzxQlQnXD
zDml^%)l6Os*`Z>c^QiUt1%LOHUY3EsrA#jiPKM=3E1rdcp5dfyJ8<-g!a!CyH*5X#
zfx<}46n%7{e4J4#ML#xB{(I`PMBg*uyc;z(An(Uu_Ml375L3=RWUYqjw_;i#rpSyQ
zWmzz%Frp#ld=>U}@Vg{_)#A5>e%0cKk^fx$Zbw^L)gtlRM88Gi*RCq=g`M%}vsirE
z=(AXSIJz87c3O{Kg_=cO%Q!78b1k>do<Gwz`-a(bE%VB%a1dCRsF^eW0$CU~5wXSX
zbCBDDbHj11vdzAG<~=i4Xtm63xp$$N!4Rvezqe+g1&-x)MUGaSF3y>#ZC)8|GhlO?
zL1?Qe*w9*wrDZ-{DsNUT^F27oW-$j%UIbuRkP0UQCG#kt9D>oNe?3?%|1*1*!nZgq
zDIQmr3|}~&ZNZc$7VY$ejd<GQb2qwc3SyUGgkpG$Ew6Fcdfi^nHX{*AraX9)Wp;Sd
zsV;@rT{_dTA(MjBgTX|!kMFH$GU4uGbnVxHBgjZ4g0ZwaqFd>(D2HxswZrLbwRX+7
zJ~rRl&p$_nwf`E2HRG`1AhCHI3rN;m=EB`-x7_cj=yA-+6xpvg?Tabge>JxowA*cS
z9j+p`%w^H8<`ylj^d>XfEhW(`J^hX{X9QgeJHw6&V5%SUb&<7`{V40vZoP1eeTAE|
z$6-C~DEqmiVmrO`Xm}jDnHk4i#&jNc=&pwyH&XrBaSiDQ4qf4U=6E<+QG_A1v!~$f
ze8X{1!CQxV!7)ci>@Ezx#BgpjgH-fh*3uP|9kN8N6<AfCNHT7Cda|)-HtlInc4gy6
zB9r!P$Yev&Y~0h5zy&9c_0j9`x?LNLIM$Al^0eW$^q`T6c-90Hz42fIR~eS`be5>g
z(>vfD_i(|bRmXj?WH96PH5C?MCfSkJYfz;l$yCObO{AmYgb{M_^_L1_(Z)Lx*?6as
zN{eG!bu$8%sCafof+>aTS2mXE@S1|p6lzVO&J^lP<Eo7hwX}buV`Ixh?X^A?OD4jl
zjhL*5Ez;)8easeml_~iO-3uEDBNfaTYa>QiZ(*|)#bCrj@6%|xDfuQPw7p~mWQ-;o
zLP7U_-9sB)YrTywZ;jjM_PTsEK5vcJTjN?D&twyZU$-LK1vQxJiuj`qO%1N)Vb}8R
zV0uTQE0RhklG*g~Y+`#f5n8Tqwdq1DL&+?!xWxm_S=3W`<+EdIFmZ^lU3<4{X|vH8
z4JM>%%Ny>P-bj6C<5_3f`G~UYa$0VvwA=UL400il=OYu}fNJ$@=b&}XEXTT>&GsGJ
zd#B*Xm(VJ)^SUzW)AF?KDSOUgd&zog^{-ZstbPy9F!R3H2QW>YxCPyOqUy<HSAV!P
zsX)N-R;)rVjbhU`*C`j9;w^S6+4Rk_Sm*6_D%tccw^*;7QXtv%&37uxrh8PZ^Cmo%
zZ2DGQtn;=!mH6MB8${(8&qM!keVt76tWG_?W(LR4Wh!9myiJ*jdK_RZ&IjYAOe2_f
z-Zsrdeb`jM)SsEAADE^eo~Hj`n*J4UHvP_<I&wNX`kNZuVI$Mg*VU1UWD~va&VJRg
zuJz$Ht6MuBzVE&bf%cB})oWS<9cm-roU8GZFqH{x%?4w#nRUb~?ea`Cj*Y|p%k3O9
z5~MDiTYdN;s%P1Xso-o>V9NMgWd<&iF5x?beZuz$Hw!-~%&}*=4&jLKR$+dBq&+9h
zv88@U_yysYg<lbVUHBd04}{MMPY7QS{#=;f9~r+&c#$xFn=rplc$ILg@FwAqaG&rl
zVV(ype^B_S@NwZ2!tV-?3Xcn)6Xt)07>C=KTq#^FyhON0nBO_=xTtlI@#FGo(T|9J
zTJ#Cg=V0B_pLbmPKPq}c^zVZ???=I$_v2u;;}jYAo$$3dR_xc}8#Nhm)`98wZ8Cha
z!mrW}zxT=Tn;>H`T_EEMYDXD6egM~!(XK8q%YT<TeyhGo#sM%+#$j89-y4j#l#F;x
z7TSdQyO=spB{KIbnXY71shQ_Cb(ioG;ibaMglmNBgqws{3a=7w7G5vhD%>XAF1$&2
zv+x$-knkSiy~6v1pAp_Kd{FqX@Dbso!Y>LR6Fx5dituZ~CxqV=J}LaJ@M+->g-3<Y
z2#*Pm3r`526;@c!9B1x3vQxNHnER0V3xunMxi9tn2rm)lK4tzg;TmD?Tjn<juN3A!
zW`48qdSUKs=C=vA3v-_{f3xrw;gIki;l0B9gr5=KFMLq=u<#M#qrxu=9}_+<{EF~v
z!Y72^6h0~ZuJCE$4~0jC&j^nRj|)!-pB3gg!~WWZ`M(zGJa@=d!V83X4l#d`uuGWd
z67!b|^Zzl_c}|h*gqws{3a=7w7G5vhD$LId7N_iI{4VAD$O7hfFEYQKS>Ss!xuWp@
zGv+sl-7nlM{DANy!u)1N|1H8{;fyf9snGr%;irY46aJy_OTzp_#rEj^gmQY{fc5?W
zUl6}9gey4@$X_IUm+(Ep4+wu#xR;FhPYM4}Sg#M{|5kJlWIYaKARziiVM918JScpK
z47?&dCX9=n&R;65=LJ{CD(SBt5BR#ETfrP}GRM(MXLou>95;7xCRN~wDW!~<J7e@`
zl$%m0m<cL(XF3fvSx{(nU->RnC}MPG!}u7`omB3SmV=$0DPx-iEac#(6E+x>b?7X7
zelW}eXp3@pCFA^gsN9KU#&F{|%kp$4*wtGoV?;W-@#P&Q!l`7o4_*5IrVrrAb!(<N
z2w2j34Kv>^SPaJWP2SK~LN5N+LK_qB!@QNR0+==-;~2)8djh26F+T5TEQ2Z2X%FV1
zjSiAr!ncBp<MAKU6DY)ZX4@Fg1CY&lqg0BL**^A<vRTyx{32Wfl3c><AN|V2aXmhm
zvpzGK@irsFlxb^)U({?wk&W-x;(korjQ?Y!Ap605#%7ZvKykdE;-2#l$TO2^<K5Jh
zY1@MPiHm|H)3yzIalQSw6!rz{tpv<^^N`Il5Y-;Ui<pB{WE+B99B&`uvE7Wv|0|gB
zo`=kMH2~8&IPiboW}=OFQP}ibSzS0Mr~B!%%gh9a;8&c?w!e)`%4Svc+f(Go_A$K$
z6!&94`oWOw2f9AlkK$O!R%hYF_ZY5u`g~zLo->S9H0|m&+z;6|GcgVm_f)apG1U8S
K+ERF!e*XsoyBp*H

literal 0
HcmV?d00001

diff --git a/tests/build/test/out/c/test_StringManipulation_runner.o b/tests/build/test/out/c/test_StringManipulation_runner.o
new file mode 100644
index 0000000000000000000000000000000000000000..a16f5ca7cabe5425f7561602ee5f41abf3faf7d6
GIT binary patch
literal 7004
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

literal 0
HcmV?d00001

diff --git a/tests/build/test/out/c/unity.o b/tests/build/test/out/c/unity.o
new file mode 100644
index 0000000000000000000000000000000000000000..ba42096a557fd346fc5e19cc1abf5f04fd708307
GIT binary patch
literal 39856
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

literal 0
HcmV?d00001

diff --git a/tests/build/test/out/test_StringManipulation.out b/tests/build/test/out/test_StringManipulation.out
new file mode 100755
index 0000000000000000000000000000000000000000..e8425d00e8c575e46d6dbe7b500b856acf38ef57
GIT binary patch
literal 59008
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

literal 0
HcmV?d00001

diff --git a/tests/build/test/preprocess/files/test_StringManipulation.c b/tests/build/test/preprocess/files/test_StringManipulation.c
new file mode 100644
index 0000000..0d87c99
--- /dev/null
+++ b/tests/build/test/preprocess/files/test_StringManipulation.c
@@ -0,0 +1,195 @@
+#include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.h"
+#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
+
+
+
+
+
+
+void test_to_string()
+
+{
+
+
+
+ char *result_1[] = {"0","1","2","3","4","5","6","7","8","9","10"};
+
+ char *result_2[] = {"500","502","504","506","508","510","512","514","516","518"};
+
+ char *result_3[] = {"1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"};
+
+ char *result_4[] = {"9999","8999","7999","6999","5999","4999","3999","2999","1999","999"};
+
+ char *result_5[] = {"1000000","2000000","3000000","4000000","5000000","6000000","7000000",
+
+       "8000000","9000000","10000000"};
+
+
+
+ for(int i=0;i<=10;++i){
+
+  UnityAssertEqualString((const char*)((result_1[i])), (const char*)((to_string(i))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(17));
+
+ }
+
+
+
+ for(int i=0, j=500;i<10;++i,j+=2){
+
+  UnityAssertEqualString((const char*)((result_2[i])), (const char*)((to_string(j))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(21));
+
+ }
+
+
+
+ for(int i=0, j=1000;i<10;++i,j+=1000){
+
+  UnityAssertEqualString((const char*)((result_3[i])), (const char*)((to_string(j))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(25));
+
+ }
+
+
+
+ for(int i=0, j=9999;i<10;++i,j-=1000){
+
+  UnityAssertEqualString((const char*)((result_4[i])), (const char*)((to_string(j))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(29));
+
+ }
+
+ for(int i=0, j=1000000;i<10;++i,j+=1000000){
+
+  UnityAssertEqualString((const char*)((result_5[i])), (const char*)((to_string(j))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(32));
+
+ }
+
+
+
+}
+
+
+
+
+
+void test_generateCheckString()
+
+{
+
+
+
+ int numbers_1[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
+
+ char *strings_1[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
+
+ char *result_1[] = {"0=a","1=b","2=c","3=d","4=e","5=f","6=g","7=h","8=i","9=j","10=k","11=l","12=m","13=n","14=o","15=p","16=q","17=r", "18=s","19=t","20=u","21=v","22=w","23=x","24=y","25=z"};
+
+ for(int i=0;i<26;++i){
+
+  UnityAssertEqualString((const char*)((result_1[i])), (const char*)((generateCheckString(numbers_1[i],*(strings_1+i)))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(45));
+
+ }
+
+
+
+ int numbers_2[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025};
+
+ char *strings_2[] = {"z","zy","zyx","zyxw","zyxwv","zyxwvu","zyxwvut","zyxwvuts","zyxwvutsr","zyxwvutsrq","zyxwvutsrqp",
+
+        "zyxwvutsrqpo","zyxwvutsrqpon","zyxwvutsrqponm","zyxwvutsrqponml","zyxwvutsrqponmlk",
+
+        "zyxwvutsrqponmlkj","zyxwvutsrqponmlkji","zyxwvutsrqponmlkjih","zyxwvutsrqponmlkjihg","zyxwvutsrqponmlkjihgf",
+
+         "zyxwvutsrqponmlkjihgfe","zyxwvutsrqponmlkjihgfed","zyxwvutsrqponmlkjihgfedc","zyxwvutsrqponmlkjihgfedcb",
+
+         "zyxwvutsrqponmlkjihgfedcba"};
+
+ char *result_2[] = {"0=z","1=zy","1=zyx","2=zyxw","3=zyxwv","5=zyxwvu","8=zyxwvut","13=zyxwvuts","21=zyxwvutsr","34=zyxwvutsrq",
+
+                     "55=zyxwvutsrqp","89=zyxwvutsrqpo","144=zyxwvutsrqpon","233=zyxwvutsrqponm","377=zyxwvutsrqponml",
+
+       "610=zyxwvutsrqponmlk","987=zyxwvutsrqponmlkj","1597=zyxwvutsrqponmlkji","2584=zyxwvutsrqponmlkjih",
+
+       "4181=zyxwvutsrqponmlkjihg","6765=zyxwvutsrqponmlkjihgf","10946=zyxwvutsrqponmlkjihgfe",
+
+       "17711=zyxwvutsrqponmlkjihgfed","28657=zyxwvutsrqponmlkjihgfedc","46368=zyxwvutsrqponmlkjihgfedcb",
+
+       "75025=zyxwvutsrqponmlkjihgfedcba"};
+
+ for(int i=0;i<26;++i){
+
+  UnityAssertEqualString((const char*)((result_2[i])), (const char*)((generateCheckString(numbers_2[i],*(strings_2+i)))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(61));
+
+ }
+
+
+
+ srand(time(0));
+
+ int random_number=0;
+
+ char *random_numbers_strings[20];
+
+ int random_numbers[20];
+
+ for(int i=0;i<20;++i){
+
+  random_number = (rand() % 100) + 1;
+
+  random_numbers_strings[i] = to_string(random_number);
+
+  random_numbers[i] = random_number;
+
+ }
+
+ char *strings_3[] = {"tree","plant","tea","programming","assembler","unix","BSD","snow","mountain","table","wood","forest", "calculator","book","light","keyboard","old","paper","pencil","voltage"};
+
+ char *result_3[20];
+
+ for(int i=0;i<20;++i){
+
+  random_numbers_strings[i] = strcat(random_numbers_strings[i],"=");
+
+  result_3[i] = strcat(random_numbers_strings[i],strings_3[i]);
+
+  printf("%s\n",result_3[i]);
+
+ }
+
+ for(int i=0;i<20;++i){
+
+  UnityAssertEqualString((const char*)((result_3[i])), (const char*)((generateCheckString(random_numbers[i],strings_3[i]))), (
+
+ ((void *)0)
+
+ ), (UNITY_UINT)(81));
+
+ }
+
+}
diff --git a/tests/build/test/preprocess/includes/test_StringManipulation.c b/tests/build/test/preprocess/includes/test_StringManipulation.c
new file mode 100644
index 0000000..77ded96
--- /dev/null
+++ b/tests/build/test/preprocess/includes/test_StringManipulation.c
@@ -0,0 +1,3 @@
+---
+- "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
+- Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.h
diff --git a/tests/build/test/results/test_StringManipulation.pass b/tests/build/test/results/test_StringManipulation.pass
new file mode 100644
index 0000000..84a7b10
--- /dev/null
+++ b/tests/build/test/results/test_StringManipulation.pass
@@ -0,0 +1,42 @@
+---
+:source:
+  :path: test
+  :file: test_StringManipulation.c
+:successes:
+- :test: test_to_string
+  :line: 6
+  :message: ''
+  :unity_test_time: 0
+- :test: test_generateCheckString
+  :line: 38
+  :message: ''
+  :unity_test_time: 0
+:failures: []
+:ignores: []
+:counts:
+  :total: 2
+  :passed: 2
+  :failed: 0
+  :ignored: 0
+:stdout:
+- 9=tree
+- 26=plant
+- 92=tea
+- 31=programming
+- 75=assembler
+- 28=unix
+- 92=BSD
+- 99=snow
+- 10=mountain
+- 43=table
+- 92=wood
+- 98=forest
+- 3=calculator
+- 32=book
+- 29=light
+- 92=keyboard
+- 35=old
+- 27=paper
+- 85=pencil
+- 91=voltage
+:time: 0.0019293400000606198
diff --git a/tests/build/test/runners/test_StringManipulation_runner.c b/tests/build/test/runners/test_StringManipulation_runner.c
new file mode 100644
index 0000000..8c93227
--- /dev/null
+++ b/tests/build/test/runners/test_StringManipulation_runner.c
@@ -0,0 +1,89 @@
+/* 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_to_string();
+extern void test_generateCheckString();
+
+
+/*=======Mock Management=====*/
+static void CMock_Init(void)
+{
+  GlobalExpectCount = 0;
+  GlobalVerifyOrder = 0;
+  GlobalOrderError = NULL;
+}
+static void CMock_Verify(void)
+{
+}
+static void CMock_Destroy(void)
+{
+}
+
+/*=======Setup (stub)=====*/
+void setUp(void) {}
+
+/*=======Teardown (stub)=====*/
+void tearDown(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_StringManipulation.c");
+  run_test(test_to_string, "test_to_string", 6);
+  run_test(test_generateCheckString, "test_generateCheckString", 38);
+
+  return UnityEnd();
+}
diff --git a/tests/project.yml b/tests/project.yml
new file mode 100644
index 0000000..7245e5e
--- /dev/null
+++ b/tests/project.yml
@@ -0,0 +1,101 @@
+---
+
+# Notes:
+# Sample project C code is not presently written to produce a release artifact.
+# As such, release build options are disabled.
+# This sample, therefore, only demonstrates running a collection of unit tests.
+
+:project:
+  :use_exceptions: FALSE
+  :use_test_preprocessor: TRUE
+  :use_auxiliary_dependencies: TRUE
+  :build_root: build
+#  :release_build: TRUE
+  :test_file_prefix: test_
+  :which_ceedling: gem
+  :ceedling_version: 0.31.1
+  :default_tasks:
+    - test:all
+
+#:test_build:
+#  :use_assembly: TRUE
+
+#:release_build:
+#  :output: MyApp.out
+#  :use_assembly: FALSE
+
+:environment:
+
+:extension:
+  :executable: .out
+
+:paths:
+  :test:
+    - +:test/**
+    - -:test/support
+  :source:
+    - /home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/**
+  :support:
+    - test/support
+  :libraries: []
+
+:defines:
+  # in order to add common defines:
+  #  1) remove the trailing [] from the :common: section
+  #  2) add entries to the :common: section (e.g. :test: has TEST defined)
+  :common: &common_defines []
+  :test:
+    - *common_defines
+    - TEST
+  :test_preprocess:
+    - *common_defines
+    - TEST
+
+:cmock:
+  :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
+
+# Add -gcov to the plugins list to make sure of the gcov plugin
+# You will need to have gcov and gcovr both installed to make it work.
+# For more information on these options, see docs in plugins/gcov
+:gcov:
+  :reports:
+    - HtmlDetailed
+  :gcovr:
+    :html_medium_threshold: 75
+    :html_high_threshold: 90
+
+#:tools:
+# Ceedling defaults to using gcc for compiling, linking, etc.
+# As [:tools] is blank, gcc will be used (so long as it's in your system path)
+# See documentation to configure a given toolchain for use
+
+# LIBRARIES
+# These libraries are automatically injected into the build process. Those specified as
+# common will be used in all types of builds. Otherwise, libraries can be injected in just
+# tests or releases. These options are MERGED with the options in supplemental yaml files.
+:libraries:
+  :placement: :end
+  :flag: "-l${1}"
+  :path_flag: "-L ${1}"
+  :system: []    # for example, you might list 'm' to grab the math library
+  :test: []
+  :release: []
+
+:plugins:
+  :load_paths:
+    - "#{Ceedling.load_path}"
+  :enabled:
+    - stdout_pretty_tests_report
+    - module_generator
+...
diff --git a/tests/test/test_StringManipulation.c b/tests/test/test_StringManipulation.c
index b8ca872..accd414 100644
--- a/tests/test/test_StringManipulation.c
+++ b/tests/test/test_StringManipulation.c
@@ -1,5 +1,7 @@
 #include "unity.h"
 #include "StringManipulation.h"
+#include <time.h>
+#include <string.h>
 
 void test_to_string() 
 {
@@ -12,27 +14,70 @@ void test_to_string()
 			    "8000000","9000000","10000000"};
 
 	for(int i=0;i<=10;++i){
-		printf("%s\n", to_string(i));
 		TEST_ASSERT_EQUAL_STRING(result_1[i],to_string(i));
 	}	
 	
 	for(int i=0, j=500;i<10;++i,j+=2){
-		printf("%s\n", to_string(j));
 		TEST_ASSERT_EQUAL_STRING(result_2[i],to_string(j));
 	}
 
 	for(int i=0, j=1000;i<10;++i,j+=1000){
-		printf("%s\n", to_string(j));
 		TEST_ASSERT_EQUAL_STRING(result_3[i],to_string(j));	
 	}
 	
 	for(int i=0, j=9999;i<10;++i,j-=1000){
-		printf("%s\n", to_string(j));
 		TEST_ASSERT_EQUAL_STRING(result_4[i], to_string(j));
 	}
 	for(int i=0, j=1000000;i<10;++i,j+=1000000){
-		printf("%s\n", to_string(j));
 		TEST_ASSERT_EQUAL_STRING(result_5[i],to_string(j));
 	}
 
 }
+
+
+void test_generateCheckString() 
+{
+	/*test block 1*/
+	int numbers_1[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
+	char *strings_1[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
+	char *result_1[] = {"0=a","1=b","2=c","3=d","4=e","5=f","6=g","7=h","8=i","9=j","10=k","11=l","12=m","13=n","14=o","15=p","16=q","17=r",                            "18=s","19=t","20=u","21=v","22=w","23=x","24=y","25=z"};
+	for(int i=0;i<26;++i){
+		TEST_ASSERT_EQUAL_STRING(result_1[i],generateCheckString(numbers_1[i],*(strings_1+i)));
+	}
+	/*test block 2*/
+	int numbers_2[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025};
+	char *strings_2[] = {"z","zy","zyx","zyxw","zyxwv","zyxwvu","zyxwvut","zyxwvuts","zyxwvutsr","zyxwvutsrq","zyxwvutsrqp",
+			     "zyxwvutsrqpo","zyxwvutsrqpon","zyxwvutsrqponm","zyxwvutsrqponml","zyxwvutsrqponmlk",
+			     "zyxwvutsrqponmlkj","zyxwvutsrqponmlkji","zyxwvutsrqponmlkjih","zyxwvutsrqponmlkjihg","zyxwvutsrqponmlkjihgf",
+			      "zyxwvutsrqponmlkjihgfe","zyxwvutsrqponmlkjihgfed","zyxwvutsrqponmlkjihgfedc","zyxwvutsrqponmlkjihgfedcb",
+			      "zyxwvutsrqponmlkjihgfedcba"};
+	char *result_2[] = {"0=z","1=zy","1=zyx","2=zyxw","3=zyxwv","5=zyxwvu","8=zyxwvut","13=zyxwvuts","21=zyxwvutsr","34=zyxwvutsrq",
+	                    "55=zyxwvutsrqp","89=zyxwvutsrqpo","144=zyxwvutsrqpon","233=zyxwvutsrqponm","377=zyxwvutsrqponml",
+			    "610=zyxwvutsrqponmlk","987=zyxwvutsrqponmlkj","1597=zyxwvutsrqponmlkji","2584=zyxwvutsrqponmlkjih",
+			    "4181=zyxwvutsrqponmlkjihg","6765=zyxwvutsrqponmlkjihgf","10946=zyxwvutsrqponmlkjihgfe",
+			    "17711=zyxwvutsrqponmlkjihgfed","28657=zyxwvutsrqponmlkjihgfedc","46368=zyxwvutsrqponmlkjihgfedcb",
+			    "75025=zyxwvutsrqponmlkjihgfedcba"};
+	for(int i=0;i<26;++i){
+		TEST_ASSERT_EQUAL_STRING(result_2[i],generateCheckString(numbers_2[i],*(strings_2+i)));	
+	}
+	/*test block 3*/
+	srand(time(0));
+	int random_number=0;
+	char *random_numbers_strings[20];
+	int random_numbers[20];
+	for(int i=0;i<20;++i){
+		random_number = (rand() % 100) + 1;
+		random_numbers_strings[i] = to_string(random_number);
+		random_numbers[i] = random_number;
+	}
+	char *strings_3[] = {"tree","plant","tea","programming","assembler","unix","BSD","snow","mountain","table","wood","forest", "calculator","book","light","keyboard","old","paper","pencil","voltage"};
+	char *result_3[20];
+	for(int i=0;i<20;++i){
+		random_numbers_strings[i] = strcat(random_numbers_strings[i],"=");
+		result_3[i] = strcat(random_numbers_strings[i],strings_3[i]);
+		printf("%s\n",result_3[i]);
+	}
+	for(int i=0;i<20;++i){
+		TEST_ASSERT_EQUAL_STRING(result_3[i],generateCheckString(random_numbers[i],strings_3[i]));
+	}
+}