From 088f75b7833b93ea45384a1f2e28fd607d3aba3b Mon Sep 17 00:00:00 2001 From: ehrnspergersi95041 Date: Sun, 16 Nov 2025 17:06:50 +0100 Subject: [PATCH] =?UTF-8?q?angepasste=20Dateien=20vom=20Schr=C3=B6der=20?= =?UTF-8?q?=C3=BCbernommen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NeuronalesNetz_Aufgabenstellung.pdf | Bin 59083 -> 64661 bytes Start_Windows/imageInputTests.c | 6 +++--- Start_Windows/matrixTests.c | 29 +++++++++++++++++++++++++++- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/NeuronalesNetz_Aufgabenstellung.pdf b/NeuronalesNetz_Aufgabenstellung.pdf index 59af82f699a2f7600e746500e4d9ebbd1c147ba6..b4c6ce546ac738d0aab89b1d7cac75941e645a4f 100644 GIT binary patch delta 21707 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 delta 16555 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 diff --git a/Start_Windows/imageInputTests.c b/Start_Windows/imageInputTests.c index c704271..ba2f850 100644 --- a/Start_Windows/imageInputTests.c +++ b/Start_Windows/imageInputTests.c @@ -2,7 +2,7 @@ #include #include #include -#include "unity.h" +#include "./unity/unity.h" #include "imageInput.h" @@ -54,7 +54,7 @@ void test_readImagesReturnsCorrectImageWidth(void) GrayScaleImageSeries *series = NULL; const unsigned short expectedWidth = 10; const char *path = "testFile.info2"; - prepareImageFile(path, 8, expectedWidth, 2, 1); + prepareImageFile(path, expectedWidth, 8, 2, 1); series = readImages(path); TEST_ASSERT_NOT_NULL(series); TEST_ASSERT_NOT_NULL(series->images); @@ -70,7 +70,7 @@ void test_readImagesReturnsCorrectImageHeight(void) GrayScaleImageSeries *series = NULL; const unsigned short expectedHeight = 10; const char *path = "testFile.info2"; - prepareImageFile(path, expectedHeight, 8, 2, 1); + prepareImageFile(path, 8, expectedHeight, 2, 1); series = readImages(path); TEST_ASSERT_NOT_NULL(series); TEST_ASSERT_NOT_NULL(series->images); diff --git a/Start_Windows/matrixTests.c b/Start_Windows/matrixTests.c index 686db1e..27c809a 100644 --- a/Start_Windows/matrixTests.c +++ b/Start_Windows/matrixTests.c @@ -2,7 +2,7 @@ #include #include #include "matrix.h" -#include "unity.h" +#include "./unity/unity.h" void test_createMatrixFailsOnZeroDimensions(void) @@ -71,6 +71,32 @@ void test_addFailsOnDifferentInputDimensions(void) TEST_ASSERT_EQUAL_UINT32(0, result.cols); } +void test_addSupportsBroadcasting(void) +{ + MatrixType buffer1[] = {1, 2, 3, 4, 5, 6}; + MatrixType buffer2[] = {7, 8}; + Matrix matrix1 = {.rows=2, .cols=3, .buffer=buffer1}; + Matrix matrix2 = {.rows=2, .cols=1, .buffer=buffer2}; + + Matrix result1 = add(matrix1, matrix2); + Matrix result2 = add(matrix2, matrix1); + + float expectedResults[] = {8, 9, 10, 12, 13, 14}; + + TEST_ASSERT_EQUAL_UINT32(matrix1.rows, result1.rows); + TEST_ASSERT_EQUAL_UINT32(matrix1.cols, result1.cols); + TEST_ASSERT_EQUAL_UINT32(matrix1.rows, result2.rows); + TEST_ASSERT_EQUAL_UINT32(matrix1.cols, result2.cols); + + TEST_ASSERT_EQUAL_INT(sizeof(expectedResults)/sizeof(expectedResults[0]), result1.rows * result1.cols); + TEST_ASSERT_EQUAL_FLOAT_ARRAY(expectedResults, result1.buffer, result1.cols * result1.rows); + TEST_ASSERT_EQUAL_INT(sizeof(expectedResults)/sizeof(expectedResults[0]), result2.rows * result2.cols); + TEST_ASSERT_EQUAL_FLOAT_ARRAY(expectedResults, result2.buffer, result2.cols * result2.rows); + + free(result1.buffer); + free(result2.buffer); +} + void test_multiplyReturnsCorrectResults(void) { MatrixType buffer1[] = {1, 2, 3, 4, 5, 6}; @@ -159,6 +185,7 @@ int main() RUN_TEST(test_clearMatrixSetsMembersToNull); RUN_TEST(test_addReturnsCorrectResult); RUN_TEST(test_addFailsOnDifferentInputDimensions); + RUN_TEST(test_addSupportsBroadcasting); RUN_TEST(test_multiplyReturnsCorrectResults); RUN_TEST(test_multiplyFailsOnWrongInputDimensions); RUN_TEST(test_getMatrixAtReturnsCorrectResult);