diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/jacobi.t.c | 33 | ||||
-rw-r--r-- | test/main.c | 9 | ||||
-rw-r--r-- | test/rand.t.c | 10 |
3 files changed, 51 insertions, 1 deletions
diff --git a/test/jacobi.t.c b/test/jacobi.t.c new file mode 100644 index 0000000..dc13d6e --- /dev/null +++ b/test/jacobi.t.c @@ -0,0 +1,33 @@ +#include "lizfcm.test.h" +#include <math.h> + +Matrix_double *generate_ddm(size_t n) { + Matrix_double *m = InitMatrixWithSize(double, n, n, rand_from(0.0, 1.0)); + + for (size_t y = 0; y < m->rows; y++) { + m->data[y]->data[y] += sum_v(m->data[y]); + } + + return m; +} + +UTEST(jacobi, jacobi_solve) { + Matrix_double *m = generate_ddm(2); + + Array_double *b_1 = InitArrayWithSize(double, m->rows, 1.0); + Array_double *b = m_dot_v(m, b_1); + + double tolerance = 0.001; + size_t max_iter = 400; + Array_double *solution = jacobi_solve(m, b, tolerance, max_iter); + + for (size_t y = 0; y < m->rows; y++) { + double dot = v_dot_v(m->data[y], solution); + EXPECT_NEAR(b->data[y], dot, 0.1); + } + + free_matrix(m); + free_vector(b_1); + free_vector(b); + free_vector(solution); +} diff --git a/test/main.c b/test/main.c index 5d16fe7..6a92d4a 100644 --- a/test/main.c +++ b/test/main.c @@ -1,5 +1,12 @@ #include "lizfcm.test.h" +#include <stdlib.h> +#include <time.h> UTEST(basic, unit_tests) { ASSERT_TRUE(1); } -UTEST_MAIN(); +UTEST_STATE(); +int main(int argc, const char *const argv[]) { + srand(time(NULL)); + + return utest_main(argc, argv); +} diff --git a/test/rand.t.c b/test/rand.t.c new file mode 100644 index 0000000..9ed2e9c --- /dev/null +++ b/test/rand.t.c @@ -0,0 +1,10 @@ +#include "lizfcm.test.h" + +UTEST(rand, rand_from) { + double min = -2.0; + double max = 5.0; + for (size_t i = 0; i < 1000; i++) { + double r = rand_from(min, max); + ASSERT_TRUE(min <= r && r <= max); + } +} |