diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2016-05-17 23:02:04 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2016-05-17 23:02:04 +0200 |
| commit | 7d9f7e9341ab22599ea541959dbf9323661c777f (patch) | |
| tree | 93b9262f64b606089b6b85aceafc47fa631887e8 /tests/src/test_gensvm_copy.c | |
| parent | make blas and lapack calls more compact (diff) | |
| download | gensvm-7d9f7e9341ab22599ea541959dbf9323661c777f.tar.gz gensvm-7d9f7e9341ab22599ea541959dbf9323661c777f.zip | |
start adding unit tests
Diffstat (limited to 'tests/src/test_gensvm_copy.c')
| -rw-r--r-- | tests/src/test_gensvm_copy.c | 267 |
1 files changed, 267 insertions, 0 deletions
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); |
