diff options
Diffstat (limited to 'tests/src')
| -rw-r--r-- | tests/src/test_gensvm_base.c | 64 | ||||
| -rw-r--r-- | tests/src/test_gensvm_copy.c | 267 | ||||
| -rw-r--r-- | tests/src/test_gensvm_grid.c | 26 | ||||
| -rw-r--r-- | tests/src/test_gensvm_queue.c | 58 | ||||
| -rw-r--r-- | tests/src/test_gensvm_simplex.c | 68 | ||||
| -rw-r--r-- | tests/src/test_gensvm_task.c | 26 |
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); |
