/** * @file test_gensvm_gridsearch.c * @author G.J.J. van den Burg * @date 2016-10-18 * @brief Unit tests for gensvm_gridsearch.c * * @copyright Copyright 2016, G.J.J. van den Burg. This file is part of GenSVM. GenSVM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GenSVM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GenSVM. If not, see . */ #include "minunit.h" #include "gensvm_gridsearch.h" char *test_fill_queue_nokernel() { struct GenData *train_data = gensvm_init_data(); struct GenData *test_data = gensvm_init_data(); struct GenGrid *grid = gensvm_init_grid(); grid->Np = 3; grid->Nl = 2; grid->Nk = 1; grid->Ne = 1; grid->Nw = 1; grid->ps = Calloc(double, grid->Np); grid->ps[0] = 1.0; grid->ps[1] = 1.5; grid->ps[2] = 2.0; grid->lambdas = Calloc(double, grid->Nl); grid->lambdas[0] = 1.0; grid->lambdas[1] = 5.0; grid->kappas = Calloc(double, grid->Nk); grid->kappas[0] = -0.99; grid->epsilons = Calloc(double, grid->Ne); grid->epsilons[0] = 1e-6; grid->weight_idxs = Calloc(double, grid->Nw); grid->weight_idxs[0] = 1; // start test code // struct GenQueue *q = gensvm_init_queue(); gensvm_fill_queue(grid, q, train_data, test_data); mu_assert(q->N == 6, "Incorrect number of queue elements"); int i; for (i=0; iN; i++) { mu_assert(q->tasks[i]->ID == i, "Incorrect ID"); mu_assert(q->tasks[i]->folds == 10, "Incorrect folds"); mu_assert(q->tasks[i]->kerneltype == K_LINEAR, "Incorrect kernel type"); mu_assert(q->tasks[i]->train_data == train_data, "Incorrect train_data"); mu_assert(q->tasks[i]->test_data == test_data, "Incorrect test data") } // test p value mu_assert(q->tasks[0]->p == 1.0, "Incorrect p at task 0"); mu_assert(q->tasks[1]->p == 1.5, "Incorrect p at task 1"); mu_assert(q->tasks[2]->p == 2.0, "Incorrect p at task 2"); mu_assert(q->tasks[3]->p == 1.0, "Incorrect p at task 3"); mu_assert(q->tasks[4]->p == 1.5, "Incorrect p at task 4"); mu_assert(q->tasks[5]->p == 2.0, "Incorrect p at task 5"); // test lambda value mu_assert(q->tasks[0]->lambda == 1.0, "Incorrect lambda at task 0"); mu_assert(q->tasks[1]->lambda == 1.0, "Incorrect lambda at task 1"); mu_assert(q->tasks[2]->lambda == 1.0, "Incorrect lambda at task 2"); mu_assert(q->tasks[3]->lambda == 5.0, "Incorrect lambda at task 3"); mu_assert(q->tasks[4]->lambda == 5.0, "Incorrect lambda at task 4"); mu_assert(q->tasks[5]->lambda == 5.0, "Incorrect lambda at task 5"); // test kappa value mu_assert(q->tasks[0]->kappa == -0.99, "Incorrect kappa at task 0"); mu_assert(q->tasks[1]->kappa == -0.99, "Incorrect kappa at task 1"); mu_assert(q->tasks[2]->kappa == -0.99, "Incorrect kappa at task 2"); mu_assert(q->tasks[3]->kappa == -0.99, "Incorrect kappa at task 3"); mu_assert(q->tasks[4]->kappa == -0.99, "Incorrect kappa at task 4"); mu_assert(q->tasks[5]->kappa == -0.99, "Incorrect kappa at task 5"); // test epsilon value mu_assert(q->tasks[0]->epsilon == 1e-6, "Incorrect epsilon at task 0"); mu_assert(q->tasks[1]->epsilon == 1e-6, "Incorrect epsilon at task 1"); mu_assert(q->tasks[2]->epsilon == 1e-6, "Incorrect epsilon at task 2"); mu_assert(q->tasks[3]->epsilon == 1e-6, "Incorrect epsilon at task 3"); mu_assert(q->tasks[4]->epsilon == 1e-6, "Incorrect epsilon at task 4"); mu_assert(q->tasks[5]->epsilon == 1e-6, "Incorrect epsilon at task 5"); gensvm_free_queue(q); // end test code // gensvm_free_data(train_data); gensvm_free_data(test_data); gensvm_free_grid(grid); return NULL; } char *test_kernel_changed() { mu_test_missing(); return NULL; } char *test_kernel_folds() { mu_test_missing(); return NULL; } char *test_train_queue() { mu_test_missing(); return NULL; } char *test_gridsearch_progress() { mu_test_missing(); return NULL; } char *all_tests() { mu_suite_start(); mu_run_test(test_fill_queue_nokernel); mu_run_test(test_kernel_changed); mu_run_test(test_kernel_folds); mu_run_test(test_train_queue); mu_run_test(test_gridsearch_progress); return NULL; } RUN_TESTS(all_tests);