From 0598d5b8915f0ba69d9cbbeeec6adc974d32df76 Mon Sep 17 00:00:00 2001 From: Raffaele Date: Mon, 17 Jan 2022 17:53:25 +0100 Subject: [PATCH] readme --- my_test | Bin 30320 -> 0 bytes tests/README.md | 19 +++ tests/test.c | 300 ++---------------------------------------------- 3 files changed, 26 insertions(+), 293 deletions(-) delete mode 100755 my_test create mode 100644 tests/README.md diff --git a/my_test b/my_test deleted file mode 100755 index 01f6c07cb6e26235f964fefa38f677b94338d128..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30320 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 diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..1b30d03 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,19 @@ +## Description +Here is developed the testing unit for all the lina functions that need numerical testing. + +## Usage +For each function in the lina library named in the form of 'lina_something()', here is defined a folder named 'something'. In each folder there are many tests, each one identified by a ti.txt file, for i=1,...,n. +Each test file is defined as follows: The first matrix/matrices are the inputs of the function (depending on the function, for example: lina_add() has two inputs A,B and one output C=A+B. A and B have to be the first two matrices in the test file), the last matrix/matrices are the output of the function and after there are input scalar values (ordered in the same order of the function under test) of the function represented as a 1x1 matrix. +For example, a scale test file, that is a test for the lina_scale() function is defined as follows: + +[1 1 1, + 1 1 1, <-- Input matrix + 1 1 1] + +[2 2 2, + 2 2 2, <-- Output matrix + 2 2 2] + +[2] <-- Input scalar value + +By default, launching test will generate all the testing and provide on the stdout the results. \ No newline at end of file diff --git a/tests/test.c b/tests/test.c index 387c0b2..7f9f6d1 100644 --- a/tests/test.c +++ b/tests/test.c @@ -9,306 +9,20 @@ //Print the matrix A with size m by n static void pmatrix(FILE *fp, double *A, int m, int n); -struct { - double A[9], // Left argument - B[9], // Right argument - C[9]; // Expected result -} dot_tests[] = { - { - .A = { - 1, 0, 0, - 0, 1, 0, - 0, 0, 1, - }, - .B = { - 1, 0, 0, - 0, 1, 0, - 0, 0, 1, - }, - .C = { - 1, 0, 0, - 0, 1, 0, - 0, 0, 1, - }, - }, +struct dot_test{ + + double *A; + double *B; + double *C; + }; -struct { - double A[9], // Input - B[9], // Expected output - factor; // Scale factor -} scale_tests[] = { - { - .A = { - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - }, - .B = { - 2, 2, 2, - 2, 2, 2, - 2, 2, 2, - }, - .factor = 2, - }, -}; -struct { - double *A, *B; - int m, n; -} transp_tests[] = { - { - .A = (double[]) { - 1, 0, 0, 0, - 0, 2, 0, 0, - 0, 0, 3, 0, - 0, 0, 0, 4, - }, - .B = (double[]) { - 1, 0, 0, 0, - 0, 2, 0, 0, - 0, 0, 3, 0, - 0, 0, 0, 4, - }, - .m = 4, - .n = 4, - }, - { - .A = (double[]) { - 1, 2, 3, 4, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - }, - .B = (double[]) { - 1, 0, 0, 0, - 2, 0, 0, 0, - 3, 0, 0, 0, - 4, 0, 0, 0, - }, - .m = 4, - .n = 4, - }, - { - .A = (double[]) { - 0, 1, 0, 0, - 0, 2, 0, 0, - 0, 3, 0, 0, - 0, 4, 0, 0, - }, - .B = (double[]) { - 0, 0, 0, 0, - 1, 2, 3, 4, - 0, 0, 0, 0, - 0, 0, 0, 0, - }, - .m = 4, - .n = 4, - }, - { - .A = (double[]) { - 0, 0, 1, 0, - 0, 0, 2, 0, - 0, 0, 3, 0, - 0, 0, 4, 0, - }, - .B = (double[]) { - 0, 0, 0, 0, - 0, 0, 0, 0, - 1, 2, 3, 4, - 0, 0, 0, 0, - }, - .m = 4, - .n = 4, - }, - { - .A = (double[]) { - 0, 0, 0, 1, - 0, 0, 0, 2, - 0, 0, 0, 3, - 0, 0, 0, 4, - }, - .B = (double[]) { - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 1, 2, 3, 4, - }, - .m = 4, - .n = 4, - }, - { - .A = (double[]) { - 1, 0, 0, - 0, 2, 0, - 0, 0, 3, - }, - .B = (double[]) { - 1, 0, 0, - 0, 2, 0, - 0, 0, 3, - }, - .m = 3, - .n = 3, - }, - { - .A = (double[]) { - 1, 2, 3, - 0, 0, 0, - 0, 0, 0, - }, - .B = (double[]) { - 1, 0, 0, - 2, 0, 0, - 3, 0, 0, - }, - .m = 3, - .n = 3, - }, - { - .A = (double[]) { - 0, 1, 0, - 0, 2, 0, - 0, 3, 0, - }, - .B = (double[]) { - 0, 0, 0, - 1, 2, 3, - 0, 0, 0, - }, - .m = 3, - .n = 3, - }, - { - .A = (double[]) { - 0, 0, 1, - 0, 0, 2, - 0, 0, 3, - }, - .B = (double[]) { - 0, 0, 0, - 0, 0, 0, - 1, 2, 3, - }, - .m = 3, - .n = 3, - }, - { - .A = (double[]) { - 1, 2, 3, - 4, 5, 6, - }, - .B = (double[]) { - 1, 4, - 2, 5, - 3, 6, - }, - .m = 2, - .n = 3, - }, - { - .A = (double[]) { - 1, 4, - 2, 5, - 3, 6, - }, - .B = (double[]) { - 1, 2, 3, - 4, 5, 6, - }, - .m = 3, - .n = 2, - }, -}; int main() { - // Evaluate dot product tests. - { - int dot_passed = 0; - int dot_total = sizeof(dot_tests) / sizeof(*dot_tests); - - for(int i = 0; i < dot_total; i += 1) - { - double R[9]; - - lina_dot(dot_tests[i].A, dot_tests[i].B, R, 3, 3, 3); - - if(!memcmp(R, dot_tests[i].C, sizeof(R))) - { - fprintf(stderr, "Dot product test %d passed.\n", i); - dot_passed += 1; - } - else - { - fprintf(stderr, "Dot product test %d failed:\n got matrix:\n\n", i); - pmatrix(stderr, R, 3, 3); - fprintf(stderr, " instead of:\n\n"); - pmatrix(stderr, dot_tests[i].C, 3, 3); - } - } - fprintf(stderr, "\n\t%d dot products out of %d were succesful.\n\n", dot_passed, dot_total); - } - + struct dot_test a; - // Evaluate scaling tests. - { - int scale_passed = 0; - int scale_total = sizeof(scale_tests) / sizeof(*scale_tests); - - for(int i = 0; i < scale_total; i += 1) - { - double R[9]; - - lina_scale(scale_tests[i].A, R, scale_tests[i].factor, 3, 3); - - if(!memcmp(R, scale_tests[i].B, sizeof(R))) - { - fprintf(stderr, "Scaling test %d passed.\n", i); - scale_passed += 1; - } - else - { - fprintf(stderr, "Scaling test %d failed:\n got matrix:\n\n", i); - pmatrix(stderr, R, 3, 3); - fprintf(stderr, " instead of:\n\n"); - pmatrix(stderr, scale_tests[i].B, 3, 3); - } - } - fprintf(stderr, "\n\t%d scalings out of %d were succesful.\n\n", scale_passed, scale_total); - } - - // Evaluate transposition tests. - { - int transp_passed = 0; - int transp_total = sizeof(transp_tests) / sizeof(*transp_tests); - - for(int i = 0; i < transp_total; i += 1) - { - int m = transp_tests[i].m; - int n = transp_tests[i].n; - - double R[32]; - - assert(sizeof(R) >= m * n * sizeof(R[0])); - - lina_transpose(transp_tests[i].A, R, m, n); - - if(!memcmp(R, transp_tests[i].B, sizeof(R[0]) * m * n)) - { - fprintf(stderr, "Transposition test %d passed.\n", i); - transp_passed += 1; - } - else - { - fprintf(stderr, "Transposition test %d failed:\n got matrix:\n\n", i); - pmatrix(stderr, R, m, n); - fprintf(stderr, " instead of:\n\n"); - pmatrix(stderr, transp_tests[i].B, m, n); - } - } - fprintf(stderr, "\n\t%d transpositions out of %d were succesful.\n\n", transp_passed, transp_total); - } return 0; }