summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/jacobi.t.c33
-rw-r--r--test/main.c9
-rw-r--r--test/rand.t.c10
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);
+ }
+}