From 79ea2ae1e87f7861437357876a1b3f701a3bf7fc Mon Sep 17 00:00:00 2001 From: David PC Saiz Date: Fri, 10 Feb 2023 18:40:32 +0100 Subject: [PATCH] Neunter Unit Test --- ScoreBoard.txt | 1 + build/test/cache/test_Modules.c | 142 ++++++++++++++++++++- build/test/out/c/test_Modules.o | Bin 31304 -> 33960 bytes build/test/out/c/test_Modules_runner.o | Bin 10424 -> 11368 bytes build/test/out/test_Modules.out | Bin 70472 -> 71584 bytes build/test/preprocess/files/test_Modules.c | 142 ++++++++++++++++++++- build/test/results/test_Modules.pass | 82 +++++++++++- build/test/runners/test_Modules_runner.c | 10 +- test/test_Modules.c | 20 ++- 9 files changed, 387 insertions(+), 10 deletions(-) diff --git a/ScoreBoard.txt b/ScoreBoard.txt index e69de29..8318c86 100644 --- a/ScoreBoard.txt +++ b/ScoreBoard.txt @@ -0,0 +1 @@ +Test \ No newline at end of file diff --git a/build/test/cache/test_Modules.c b/build/test/cache/test_Modules.c index b56ed68..d0116f8 100644 --- a/build/test/cache/test_Modules.c +++ b/build/test/cache/test_Modules.c @@ -226,7 +226,7 @@ void test_getStartPosition_check_given_position(void) -void test_generateField_check_walls_length(void){ +void test_generateField_check_walls_length_correctly_inserted(void){ @@ -277,3 +277,143 @@ void test_generateField_check_walls_length(void){ ), (UNITY_UINT)(129), UNITY_DISPLAY_STYLE_INT); } + + + +void test_sortScoreboard_check_if_file_is_being_read(void) { + + + + + + char Text[4]; + + FILE *x; + + int y; + + + + + + if (access("ScoreBoard.txt", 0) == 0) { + + remove("ScoreBoard.txt"); + + } + + + + sortScoreboard(); + + + + x = fopen("ScoreBoard.txt", "a+"); + + + + fputs("Test", x); + + rewind(x); + + for(int i = 0; i < 4; i++) { + + fscanf(x, "%s", &Text[i]); + + } + + + + if(strcmp(Text, "Test") == 0) { + + y = 0; + + } + + + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((y)), ( + + ((void *)0) + + ), (UNITY_UINT)(158), UNITY_DISPLAY_STYLE_INT); + +} + +void test_generateField_check_last_position_change_on_score(void) + +{ + + + + + + scorePoints = 321; + + int output = 1; + + + + + + generateField(); + + + + if (field[12][1] != '0') + + { + + output = 0; + + } + + + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((output)), ( + + ((void *)0) + + ), (UNITY_UINT)(175), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_generateField_check_middle_position_change_on_score(void) + +{ + + + + + + scorePoints = 321; + + int output = 1; + + + + + + generateField(); + + + + if (field[11][1] != '0') + + { + + output = 0; + + } + + + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((output)), ( + + ((void *)0) + + ), (UNITY_UINT)(193), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/out/c/test_Modules.o b/build/test/out/c/test_Modules.o index f1e96f1a346c6bcac24e8e9e696bf9b60620b0c2..ab438497ff573d7ac2be2b4db4f096ae7013a38c 100644 GIT binary patch delta 9946 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 Z9IlnaH8y^(x7_jGMmansEW93w|8HWTfV}_! delta 7619 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 diff --git a/build/test/out/c/test_Modules_runner.o b/build/test/out/c/test_Modules_runner.o index c03d7a8c39d2723e7e9472cbac6dbe7618eeae0b..3a1321eb1f46468f83921798d28aefcdaa3737ba 100644 GIT binary patch delta 3324 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 delta 27424 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%0A$!qUU~2mO5^hL*@63vMf?{ zgmEjb-$)Gq$jng|e)$0zCWaveHhqg9xUd8PjE@xwUHm`)^V3 z7Dw$Hp{$4hHN{_Z)cyh9_j6k7XSHWo?cgxBiWSxF4`W$QdJRg~!rI@%SkJK4inY?b z+Ckwg%lH3%s#kOAs$sQv;(zYsZ!MJarqsR>&W7Pfy0!SfA9V?{mY-HyQ9CFCZjx`4 znOW&pXYHL(cUu3)pyb-!5v-@v`X2>l)c#Ja@BjH!+dC2=T0a|3R<9k-)b5X9Njo=3 zvSg-j?Ob~xiuG`&zbtcls+L8=#gSc-9b7vIY*@fC$rf9?nVKgfYU`p|f0L>#g^8f$< diff --git a/build/test/preprocess/files/test_Modules.c b/build/test/preprocess/files/test_Modules.c index b56ed68..d0116f8 100644 --- a/build/test/preprocess/files/test_Modules.c +++ b/build/test/preprocess/files/test_Modules.c @@ -226,7 +226,7 @@ void test_getStartPosition_check_given_position(void) -void test_generateField_check_walls_length(void){ +void test_generateField_check_walls_length_correctly_inserted(void){ @@ -277,3 +277,143 @@ void test_generateField_check_walls_length(void){ ), (UNITY_UINT)(129), UNITY_DISPLAY_STYLE_INT); } + + + +void test_sortScoreboard_check_if_file_is_being_read(void) { + + + + + + char Text[4]; + + FILE *x; + + int y; + + + + + + if (access("ScoreBoard.txt", 0) == 0) { + + remove("ScoreBoard.txt"); + + } + + + + sortScoreboard(); + + + + x = fopen("ScoreBoard.txt", "a+"); + + + + fputs("Test", x); + + rewind(x); + + for(int i = 0; i < 4; i++) { + + fscanf(x, "%s", &Text[i]); + + } + + + + if(strcmp(Text, "Test") == 0) { + + y = 0; + + } + + + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((y)), ( + + ((void *)0) + + ), (UNITY_UINT)(158), UNITY_DISPLAY_STYLE_INT); + +} + +void test_generateField_check_last_position_change_on_score(void) + +{ + + + + + + scorePoints = 321; + + int output = 1; + + + + + + generateField(); + + + + if (field[12][1] != '0') + + { + + output = 0; + + } + + + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((output)), ( + + ((void *)0) + + ), (UNITY_UINT)(175), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_generateField_check_middle_position_change_on_score(void) + +{ + + + + + + scorePoints = 321; + + int output = 1; + + + + + + generateField(); + + + + if (field[11][1] != '0') + + { + + output = 0; + + } + + + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((output)), ( + + ((void *)0) + + ), (UNITY_UINT)(193), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/results/test_Modules.pass b/build/test/results/test_Modules.pass index 8174205..338b929 100644 --- a/build/test/results/test_Modules.pass +++ b/build/test/results/test_Modules.pass @@ -23,19 +23,31 @@ :line: 86 :message: '' :unity_test_time: 0 -- :test: test_generateField_check_walls_length +- :test: test_generateField_check_walls_length_correctly_inserted :line: 107 :message: '' :unity_test_time: 0 +- :test: test_sortScoreboard_check_if_file_is_being_read + :line: 132 + :message: '' + :unity_test_time: 0 +- :test: test_generateField_check_last_position_change_on_score + :line: 160 + :message: '' + :unity_test_time: 0 +- :test: test_generateField_check_middle_position_change_on_score + :line: 178 + :message: '' + :unity_test_time: 0 :failures: [] :ignores: [] :counts: - :total: 6 - :passed: 6 + :total: 9 + :passed: 9 :failed: 0 :ignored: 0 :stdout: -- "\e[H\e[2J\e[3J\e[H\e[2J\e[3J" +- "\e[H\e[2J\e[3J\e[H\e[2J\e[3J\e[H\e[2J\e[3J\e[H\e[2J\e[3J\e[H\e[2J\e[3J" - " Scoreboard:" - '' - "|=======================|" @@ -67,4 +79,64 @@ - "| |" - "| |" - "|=======================|" -:time: 0.002545395000197459 +- " Scoreboard:" +- '' +- "|=======================|" +- "| OOO 321 |" +- "|=======================|" +- "| \\ |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| V |" +- "| / \\ |" +- "| / \\ |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "|=======================|" +- "|=======================|" +- "| OOO 321 |" +- "|=======================|" +- "| \\ |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| V |" +- "| / \\ |" +- "| / \\ |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "| |" +- "|=======================|" +:time: 0.00713155700009338 diff --git a/build/test/runners/test_Modules_runner.c b/build/test/runners/test_Modules_runner.c index a7964c4..05aaf0c 100644 --- a/build/test/runners/test_Modules_runner.c +++ b/build/test/runners/test_Modules_runner.c @@ -15,7 +15,10 @@ extern void test_checkBallPosition_output_if_no_goal(void); extern void test_sortScoreboard_check_if_file_is_created(void); extern void test_clearField_check_if_Playgroung_clear(void); extern void test_getStartPosition_check_given_position(void); -extern void test_generateField_check_walls_length(void); +extern void test_generateField_check_walls_length_correctly_inserted(void); +extern void test_sortScoreboard_check_if_file_is_being_read(void); +extern void test_generateField_check_last_position_change_on_score(void); +extern void test_generateField_check_middle_position_change_on_score(void); /*=======Mock Management=====*/ @@ -85,7 +88,10 @@ int main(void) run_test(test_sortScoreboard_check_if_file_is_created, "test_sortScoreboard_check_if_file_is_created", 47); run_test(test_clearField_check_if_Playgroung_clear, "test_clearField_check_if_Playgroung_clear", 64); run_test(test_getStartPosition_check_given_position, "test_getStartPosition_check_given_position", 86); - run_test(test_generateField_check_walls_length, "test_generateField_check_walls_length", 107); + run_test(test_generateField_check_walls_length_correctly_inserted, "test_generateField_check_walls_length_correctly_inserted", 107); + run_test(test_sortScoreboard_check_if_file_is_being_read, "test_sortScoreboard_check_if_file_is_being_read", 132); + run_test(test_generateField_check_last_position_change_on_score, "test_generateField_check_last_position_change_on_score", 160); + run_test(test_generateField_check_middle_position_change_on_score, "test_generateField_check_middle_position_change_on_score", 178); return UnityEnd(); } diff --git a/test/test_Modules.c b/test/test_Modules.c index 4c3409e..ee8a527 100644 --- a/test/test_Modules.c +++ b/test/test_Modules.c @@ -145,7 +145,7 @@ void test_sortScoreboard_check_if_file_is_being_read(void) { x = fopen("ScoreBoard.txt", "a+"); - fputs("Tesf", x); + fputs("Test", x); rewind(x); for(int i = 0; i < 4; i++) { fscanf(x, "%s", &Text[i]); @@ -175,4 +175,22 @@ void test_generateField_check_last_position_change_on_score(void) TEST_ASSERT_EQUAL(0, output); } +void test_generateField_check_middle_position_change_on_score(void) +{ + /* arrange */ + + scorePoints = 321; + int output = 1; + + /* act */ + generateField(); + + if (field[11][1] != '0') + { + output = 0; + } + /* assert */ + TEST_ASSERT_EQUAL(0, output); +} + #endif // TEST \ No newline at end of file