aboutsummaryrefslogtreecommitdiff
path: root/tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/test_gensvm_base.c64
-rw-r--r--tests/src/test_gensvm_copy.c267
-rw-r--r--tests/src/test_gensvm_grid.c26
-rw-r--r--tests/src/test_gensvm_queue.c58
-rw-r--r--tests/src/test_gensvm_simplex.c68
-rw-r--r--tests/src/test_gensvm_task.c26
6 files changed, 509 insertions, 0 deletions
diff --git a/tests/src/test_gensvm_base.c b/tests/src/test_gensvm_base.c
new file mode 100644
index 0000000..2f12579
--- /dev/null
+++ b/tests/src/test_gensvm_base.c
@@ -0,0 +1,64 @@
+/**
+ * @file test_gensvm_base.c
+ * @author Gertjan van den Burg
+ * @date May, 2016
+ * @brief Unit tests for gensvm_base.c functions
+ */
+
+#include "minunit.h"
+#include "gensvm_base.h"
+
+char *test_init_free_model()
+{
+ struct GenModel *model = gensvm_init_model();
+ gensvm_free_model(model);
+ return NULL;
+}
+
+char *test_allocate_free_model()
+{
+ struct GenModel *model = gensvm_init_model();
+ model->n = 3;
+ model->m = 4;
+ model->K = 5;
+ gensvm_allocate_model(model);
+ gensvm_free_model(model);
+ return NULL;
+}
+
+char *test_reallocate_free_model()
+{
+ struct GenModel *model = gensvm_init_model();
+ model->n = 3;
+ model->m = 4;
+ model->K = 5;
+ gensvm_allocate_model(model);
+ gensvm_reallocate_model(model, 3, 4);
+ model->n = 4;
+ gensvm_reallocate_model(model, 4, 4);
+ gensvm_reallocate_model(model, 4, 5);
+ gensvm_reallocate_model(model, 3, 4);
+
+ gensvm_free_model(model);
+ return NULL;
+}
+
+char *test_init_free_data()
+{
+ struct GenData *data = gensvm_init_data();
+ gensvm_free_data(data);
+ return NULL;
+}
+
+char *all_tests()
+{
+ mu_suite_start();
+ mu_run_test(test_init_free_model);
+ mu_run_test(test_allocate_free_model);
+ mu_run_test(test_reallocate_free_model);
+ mu_run_test(test_init_free_data);
+
+ return NULL;
+}
+
+RUN_TESTS(all_tests);
diff --git a/tests/src/test_gensvm_copy.c b/tests/src/test_gensvm_copy.c
new file mode 100644
index 0000000..a9636bb
--- /dev/null
+++ b/tests/src/test_gensvm_copy.c
@@ -0,0 +1,267 @@
+/**
+ * @file test_gensvm_copy.c
+ * @author Gertjan van den Burg
+ * @date May, 2016
+ * @brief Unit tests for gensvm_copy.c functions
+ */
+
+#include "minunit.h"
+#include "gensvm_copy.h"
+
+char *test_copy_model_linear()
+{
+ struct GenModel *from_model = gensvm_init_model();
+ struct GenModel *to_model = gensvm_init_model();
+
+ from_model->p = 2.0;
+ from_model->lambda = 1.0;
+ from_model->epsilon = 1e-8;
+ from_model->kappa = 1.0;
+ from_model->weight_idx = 2;
+ from_model->kerneltype = K_LINEAR;
+
+ gensvm_copy_model(from_model, to_model);
+
+ mu_assert(to_model->p == 2.0, "to_model->p incorrect.");
+ mu_assert(to_model->lambda == 1.0, "to_model->lambda incorrect.");
+ mu_assert(to_model->epsilon == 1e-8, "to_model->epsilon incorrect.");
+ mu_assert(to_model->kappa == 1.0, "to_model->kappa incorrect.");
+ mu_assert(to_model->weight_idx == 2,
+ "to_model->weight_idx incorrect.");
+ mu_assert(to_model->kerneltype == K_LINEAR, "to->kerneltype incorrect");
+
+ gensvm_free_model(from_model);
+ gensvm_free_model(to_model);
+
+ return NULL;
+}
+
+char *test_copy_model_poly_1()
+{
+ struct GenModel *from_model = gensvm_init_model();
+ struct GenModel *to_model = gensvm_init_model();
+
+ from_model->p = 2.0;
+ from_model->lambda = 1.0;
+ from_model->epsilon = 1e-8;
+ from_model->kappa = 1.0;
+ from_model->weight_idx = 2;
+ from_model->kerneltype = K_POLY;
+ from_model->kernelparam = Calloc(double, 3);
+ from_model->kernelparam[0] = 1.0;
+ from_model->kernelparam[1] = 2.0;
+ from_model->kernelparam[2] = 3.0;
+
+ gensvm_copy_model(from_model, to_model);
+
+ mu_assert(to_model->p == 2.0, "to->p incorrect.");
+ mu_assert(to_model->lambda == 1.0, "to->lambda incorrect.");
+ mu_assert(to_model->epsilon == 1e-8, "to->epsilon incorrect.");
+ mu_assert(to_model->kappa == 1.0, "to->kappa incorrect.");
+ mu_assert(to_model->weight_idx == 2, "to->weight_idx incorrect.");
+ mu_assert(to_model->kerneltype == K_POLY, "to->kerneltype incorrect");
+ mu_assert(to_model->kernelparam[0] == 1.0,
+ "to->kernelparam[0] is incorrect.");
+ mu_assert(to_model->kernelparam[1] == 2.0,
+ "to->kernelparam[1] is incorrect.");
+ mu_assert(to_model->kernelparam[2] == 3.0,
+ "to->kernelparam[2] is incorrect.");
+
+ gensvm_free_model(from_model);
+ gensvm_free_model(to_model);
+
+ return NULL;
+}
+
+char *test_copy_model_poly_2()
+{
+ struct GenModel *from_model = gensvm_init_model();
+ struct GenModel *to_model = gensvm_init_model();
+
+ from_model->p = 2.0;
+ from_model->lambda = 1.0;
+ from_model->epsilon = 1e-8;
+ from_model->kappa = 1.0;
+ from_model->weight_idx = 2;
+ from_model->kerneltype = K_POLY;
+ from_model->kernelparam = Calloc(double, 3);
+ from_model->kernelparam[0] = 1.0;
+ from_model->kernelparam[1] = 2.0;
+ from_model->kernelparam[2] = 3.0;
+ to_model->kernelparam = Calloc(double, 3);
+
+ gensvm_copy_model(from_model, to_model);
+
+ mu_assert(to_model->p == 2.0, "to_model->p incorrect.");
+ mu_assert(to_model->lambda == 1.0, "to_model->lambda incorrect.");
+ mu_assert(to_model->epsilon == 1e-8, "to_model->epsilon incorrect.");
+ mu_assert(to_model->kappa == 1.0, "to_model->kappa incorrect.");
+ mu_assert(to_model->weight_idx == 2,
+ "to_model->weight_idx incorrect.");
+ mu_assert(to_model->kerneltype == K_POLY, "to->kerneltype incorrect");
+ mu_assert(to_model->kernelparam[0] == 1.0,
+ "to->kernelparam[0] is incorrect.");
+ mu_assert(to_model->kernelparam[1] == 2.0,
+ "to->kernelparam[1] is incorrect.");
+ mu_assert(to_model->kernelparam[2] == 3.0,
+ "to->kernelparam[2] is incorrect.");
+
+ gensvm_free_model(from_model);
+ gensvm_free_model(to_model);
+
+ return NULL;
+}
+
+char *test_copy_model_rbf_1()
+{
+ struct GenModel *from_model = gensvm_init_model();
+ struct GenModel *to_model = gensvm_init_model();
+
+ from_model->p = 2.0;
+ from_model->lambda = 1.0;
+ from_model->epsilon = 1e-8;
+ from_model->kappa = 1.0;
+ from_model->weight_idx = 2;
+ from_model->kerneltype = K_RBF;
+ from_model->kernelparam = Calloc(double, 1);
+ from_model->kernelparam[0] = 5.0;
+
+ gensvm_copy_model(from_model, to_model);
+
+ mu_assert(to_model->p == 2.0, "to_model->p incorrect.");
+ mu_assert(to_model->lambda == 1.0, "to_model->lambda incorrect.");
+ mu_assert(to_model->epsilon == 1e-8, "to_model->epsilon incorrect.");
+ mu_assert(to_model->kappa == 1.0, "to_model->kappa incorrect.");
+ mu_assert(to_model->weight_idx == 2,
+ "to_model->weight_idx incorrect.");
+ mu_assert(to_model->kerneltype == K_RBF, "to->kerneltype incorrect");
+ mu_assert(to_model->kernelparam[0] == 5.0,
+ "to->kernelparam[0] is incorrect.");
+
+ gensvm_free_model(from_model);
+ gensvm_free_model(to_model);
+
+ return NULL;
+}
+
+char *test_copy_model_rbf_2()
+{
+ struct GenModel *from_model = gensvm_init_model();
+ struct GenModel *to_model = gensvm_init_model();
+
+ from_model->p = 2.0;
+ from_model->lambda = 1.0;
+ from_model->epsilon = 1e-8;
+ from_model->kappa = 1.0;
+ from_model->weight_idx = 2;
+ from_model->kerneltype = K_RBF;
+ from_model->kernelparam = Calloc(double, 1);
+ from_model->kernelparam[0] = 5.0;
+ to_model->kernelparam = Calloc(double, 1);
+
+ gensvm_copy_model(from_model, to_model);
+
+ mu_assert(to_model->p == 2.0, "to_model->p incorrect.");
+ mu_assert(to_model->lambda == 1.0, "to_model->lambda incorrect.");
+ mu_assert(to_model->epsilon == 1e-8, "to_model->epsilon incorrect.");
+ mu_assert(to_model->kappa == 1.0, "to_model->kappa incorrect.");
+ mu_assert(to_model->weight_idx == 2,
+ "to_model->weight_idx incorrect.");
+ mu_assert(to_model->kerneltype == K_RBF, "to->kerneltype incorrect");
+ mu_assert(to_model->kernelparam[0] == 5.0,
+ "to->kernelparam[0] is incorrect.");
+
+ gensvm_free_model(from_model);
+ gensvm_free_model(to_model);
+
+ return NULL;
+}
+
+char *test_copy_model_sigmoid_1()
+{
+ struct GenModel *from_model = gensvm_init_model();
+ struct GenModel *to_model = gensvm_init_model();
+
+ from_model->p = 2.0;
+ from_model->lambda = 1.0;
+ from_model->epsilon = 1e-8;
+ from_model->kappa = 1.0;
+ from_model->weight_idx = 2;
+ from_model->kerneltype = K_SIGMOID;
+ from_model->kernelparam = Calloc(double, 2);
+ from_model->kernelparam[0] = 5.0;
+ from_model->kernelparam[1] = 10.0;
+
+ gensvm_copy_model(from_model, to_model);
+
+ mu_assert(to_model->p == 2.0, "to_model->p incorrect.");
+ mu_assert(to_model->lambda == 1.0, "to_model->lambda incorrect.");
+ mu_assert(to_model->epsilon == 1e-8, "to_model->epsilon incorrect.");
+ mu_assert(to_model->kappa == 1.0, "to_model->kappa incorrect.");
+ mu_assert(to_model->weight_idx == 2,
+ "to_model->weight_idx incorrect.");
+ mu_assert(to_model->kerneltype == K_SIGMOID,
+ "to->kerneltype incorrect");
+ mu_assert(to_model->kernelparam[0] == 5.0,
+ "to->kernelparam[0] is incorrect.");
+ mu_assert(to_model->kernelparam[1] == 10.0,
+ "to->kernelparam[1] is incorrect.");
+
+ gensvm_free_model(from_model);
+ gensvm_free_model(to_model);
+
+ return NULL;
+}
+
+char *test_copy_model_sigmoid_2()
+{
+ struct GenModel *from_model = gensvm_init_model();
+ struct GenModel *to_model = gensvm_init_model();
+
+ from_model->p = 2.0;
+ from_model->lambda = 1.0;
+ from_model->epsilon = 1e-8;
+ from_model->kappa = 1.0;
+ from_model->weight_idx = 2;
+ from_model->kerneltype = K_SIGMOID;
+ from_model->kernelparam = Calloc(double, 2);
+ from_model->kernelparam[0] = 5.0;
+ from_model->kernelparam[1] = 10.0;
+ to_model->kernelparam = Calloc(double, 2);
+
+ gensvm_copy_model(from_model, to_model);
+
+ mu_assert(to_model->p == 2.0, "to_model->p incorrect.");
+ mu_assert(to_model->lambda == 1.0, "to_model->lambda incorrect.");
+ mu_assert(to_model->epsilon == 1e-8, "to_model->epsilon incorrect.");
+ mu_assert(to_model->kappa == 1.0, "to_model->kappa incorrect.");
+ mu_assert(to_model->weight_idx == 2,
+ "to_model->weight_idx incorrect.");
+ mu_assert(to_model->kerneltype == K_SIGMOID,
+ "to->kerneltype incorrect");
+ mu_assert(to_model->kernelparam[0] == 5.0,
+ "to->kernelparam[0] is incorrect.");
+ mu_assert(to_model->kernelparam[1] == 10.0,
+ "to->kernelparam[1] is incorrect.");
+
+ gensvm_free_model(from_model);
+ gensvm_free_model(to_model);
+
+ return NULL;
+}
+
+char *all_tests()
+{
+ mu_suite_start();
+ mu_run_test(test_copy_model_linear);
+ mu_run_test(test_copy_model_poly_1);
+ mu_run_test(test_copy_model_poly_2);
+ mu_run_test(test_copy_model_rbf_1);
+ mu_run_test(test_copy_model_rbf_2);
+ mu_run_test(test_copy_model_sigmoid_1);
+ mu_run_test(test_copy_model_sigmoid_2);
+
+ return NULL;
+}
+
+RUN_TESTS(all_tests);
diff --git a/tests/src/test_gensvm_grid.c b/tests/src/test_gensvm_grid.c
new file mode 100644
index 0000000..6979c5b
--- /dev/null
+++ b/tests/src/test_gensvm_grid.c
@@ -0,0 +1,26 @@
+/**
+ * @file test_gensvm_grid.c
+ * @author Gertjan van den Burg
+ * @date May, 2016
+ * @brief Unit tests for gensvm_grid.c functions
+ */
+
+#include "minunit.h"
+#include "gensvm_grid.h"
+
+char *test_init_free_grid()
+{
+ struct GenGrid *grid = gensvm_init_grid();
+ gensvm_free_grid(grid);
+ return NULL;
+}
+
+char *all_tests()
+{
+ mu_suite_start();
+ mu_run_test(test_init_free_grid);
+
+ return NULL;
+}
+
+RUN_TESTS(all_tests);
diff --git a/tests/src/test_gensvm_queue.c b/tests/src/test_gensvm_queue.c
new file mode 100644
index 0000000..542d15c
--- /dev/null
+++ b/tests/src/test_gensvm_queue.c
@@ -0,0 +1,58 @@
+/**
+ * @file test_gensvm_queue.c
+ * @author Gertjan van den Burg
+ * @date May, 2016
+ * @brief Unit tests for gensvm_queue.c functions
+ */
+
+#include "minunit.h"
+#include "gensvm_task.h"
+#include "gensvm_queue.h"
+
+char *test_init_free_queue()
+{
+ struct GenQueue *queue = gensvm_init_queue();
+ gensvm_free_queue(queue);
+ return NULL;
+}
+
+char *test_get_next_task()
+{
+ struct GenQueue *q = gensvm_init_queue();
+ q->N = 3;
+ q->i = 0;
+ q->tasks = Calloc(struct GenTask *, 3);
+
+ struct GenTask *task_1 = gensvm_init_task();
+ struct GenTask *task_2 = gensvm_init_task();
+ struct GenTask *task_3 = gensvm_init_task();
+ task_1->ID = 1;
+ task_2->ID = 2;
+ task_3->ID = 3;
+
+ q->tasks[0] = task_1;
+ q->tasks[1] = task_2;
+ q->tasks[2] = task_3;
+
+ struct GenTask *t = NULL;
+ t = get_next_task(q);
+ mu_assert(t == task_1, "first task is not task_1");
+ t = get_next_task(q);
+ t = get_next_task(q);
+ mu_assert(t == task_3, "third task is not task_3");
+
+ gensvm_free_queue(q);
+
+ return NULL;
+}
+
+char *all_tests()
+{
+ mu_suite_start();
+ mu_run_test(test_init_free_queue);
+ mu_run_test(test_get_next_task);
+
+ return NULL;
+}
+
+RUN_TESTS(all_tests);
diff --git a/tests/src/test_gensvm_simplex.c b/tests/src/test_gensvm_simplex.c
new file mode 100644
index 0000000..c13c4ea
--- /dev/null
+++ b/tests/src/test_gensvm_simplex.c
@@ -0,0 +1,68 @@
+/**
+ * @file test_gensvm_simplex.c
+ * @author Gertjan van den Burg
+ * @date May, 2016
+ * @brief Unit tests for gensvm_simplex.c functions
+ */
+
+#include "minunit.h"
+#include "gensvm_simplex.h"
+
+char *test_simplex_1()
+{
+ double *U = Calloc(double, 2*1);
+
+ gensvm_simplex(2, U);
+
+ mu_assert(matrix_get(U, 1, 0, 0) == -0.5, "U(0, 0) incorrect.");
+ mu_assert(matrix_get(U, 1, 1, 0) == 0.5, "U(1, 0) incorrect.");
+
+ free(U);
+
+ return NULL;
+}
+
+char *test_simplex_2()
+{
+ double *U = Calloc(double, 4*3);
+
+ gensvm_simplex(4, U);
+
+ mu_assert(matrix_get(U, 3, 0, 0) == -0.5, "U(0, 0) incorrect.");
+ mu_assert(matrix_get(U, 3, 1, 0) == 0.5, "U(1, 0) incorrect.");
+ mu_assert(matrix_get(U, 3, 2, 0) == 0.0, "U(2, 0) incorrect.");
+ mu_assert(matrix_get(U, 3, 3, 0) == 0.0, "U(3, 0) incorrect.");
+
+ mu_assert(fabs(matrix_get(U, 3, 0, 1) - -0.5/sqrt(3)) < 1e-14,
+ "U(0, 1) incorrect.");
+ mu_assert(fabs(matrix_get(U, 3, 1, 1) - -0.5/sqrt(3)) < 1e-14,
+ "U(1, 1) incorrect.");
+ mu_assert(fabs(matrix_get(U, 3, 2, 1) - 1.0/sqrt(3)) < 1e-14,
+ "U(2, 1) incorrect.");
+ mu_assert(fabs(matrix_get(U, 3, 3, 1) - 0.0) < 1e-14,
+ "U(3, 1) incorrect.");
+
+ mu_assert(fabs(matrix_get(U, 3, 0, 2) - -1.0/sqrt(24)) < 1e-14,
+ "U(0, 2) incorrect.");
+ mu_assert(fabs(matrix_get(U, 3, 1, 2) - -1.0/sqrt(24)) < 1e-14,
+ "U(1, 2) incorrect.");
+ mu_assert(fabs(matrix_get(U, 3, 2, 2) - -1.0/sqrt(24)) < 1e-14,
+ "U(2, 2) incorrect.");
+ mu_assert(fabs(matrix_get(U, 3, 3, 2) - 3.0/sqrt(24)) < 1e-14,
+ "U(3, 2) incorrect.");
+
+ free(U);
+
+ return NULL;
+}
+
+char *all_tests()
+{
+ mu_suite_start();
+ mu_run_test(test_simplex_1);
+ mu_run_test(test_simplex_2);
+
+ return NULL;
+}
+
+RUN_TESTS(all_tests);
diff --git a/tests/src/test_gensvm_task.c b/tests/src/test_gensvm_task.c
new file mode 100644
index 0000000..e39634b
--- /dev/null
+++ b/tests/src/test_gensvm_task.c
@@ -0,0 +1,26 @@
+/**
+ * @file test_gensvm_task.c
+ * @author Gertjan van den Burg
+ * @date May, 2016
+ * @brief Unit tests for gensvm_task.c functions
+ */
+
+#include "minunit.h"
+#include "gensvm_task.h"
+
+char *test_init_free_task()
+{
+ struct GenTask *task = gensvm_init_task();
+ gensvm_free_task(task);
+ return NULL;
+}
+
+char *all_tests()
+{
+ mu_suite_start();
+ mu_run_test(test_init_free_task);
+
+ return NULL;
+}
+
+RUN_TESTS(all_tests);