/** * @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" extern FILE *GENSVM_OUTPUT_FILE; 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_fill_queue_kernel() { struct GenData *train_data = gensvm_init_data(); struct GenData *test_data = gensvm_init_data(); struct GenGrid *grid = gensvm_init_grid(); grid->kerneltype = K_POLY; grid->Np = 3; grid->Nl = 2; grid->Nk = 1; grid->Ne = 1; grid->Nw = 1; grid->Ng = 2; grid->Nc = 3; grid->Nd = 2; 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; grid->gammas = Calloc(double, grid->Ng); grid->gammas[0] = 0.5; grid->gammas[1] = 1.5; grid->coefs = Calloc(double, grid->Nc); grid->coefs[0] = 7.0; grid->coefs[1] = 11.0; grid->coefs[2] = 13.0; grid->degrees = Calloc(double, grid->Nd); grid->degrees[0] = 3.0; grid->degrees[1] = 5.0; // start test code // struct GenQueue *q = gensvm_init_queue(); gensvm_fill_queue(grid, q, train_data, test_data); mu_assert(q->N == 72, "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_POLY, "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"); mu_assert(q->tasks[i]->weight_idx == 1, "Incorrect weight idx"); mu_assert(q->tasks[i]->epsilon == 1e-6, "Incorrect epsilon"); mu_assert(q->tasks[i]->kappa == -0.99, "Incorrect kappa"); } mu_assert(q->tasks[0]->p == 1.000000, "Incorrect p at task 0"); mu_assert(q->tasks[1]->p == 1.500000, "Incorrect p at task 1"); mu_assert(q->tasks[2]->p == 2.000000, "Incorrect p at task 2"); mu_assert(q->tasks[3]->p == 1.000000, "Incorrect p at task 3"); mu_assert(q->tasks[4]->p == 1.500000, "Incorrect p at task 4"); mu_assert(q->tasks[5]->p == 2.000000, "Incorrect p at task 5"); mu_assert(q->tasks[6]->p == 1.000000, "Incorrect p at task 6"); mu_assert(q->tasks[7]->p == 1.500000, "Incorrect p at task 7"); mu_assert(q->tasks[8]->p == 2.000000, "Incorrect p at task 8"); mu_assert(q->tasks[9]->p == 1.000000, "Incorrect p at task 9"); mu_assert(q->tasks[10]->p == 1.500000, "Incorrect p at task 10"); mu_assert(q->tasks[11]->p == 2.000000, "Incorrect p at task 11"); mu_assert(q->tasks[12]->p == 1.000000, "Incorrect p at task 12"); mu_assert(q->tasks[13]->p == 1.500000, "Incorrect p at task 13"); mu_assert(q->tasks[14]->p == 2.000000, "Incorrect p at task 14"); mu_assert(q->tasks[15]->p == 1.000000, "Incorrect p at task 15"); mu_assert(q->tasks[16]->p == 1.500000, "Incorrect p at task 16"); mu_assert(q->tasks[17]->p == 2.000000, "Incorrect p at task 17"); mu_assert(q->tasks[18]->p == 1.000000, "Incorrect p at task 18"); mu_assert(q->tasks[19]->p == 1.500000, "Incorrect p at task 19"); mu_assert(q->tasks[20]->p == 2.000000, "Incorrect p at task 20"); mu_assert(q->tasks[21]->p == 1.000000, "Incorrect p at task 21"); mu_assert(q->tasks[22]->p == 1.500000, "Incorrect p at task 22"); mu_assert(q->tasks[23]->p == 2.000000, "Incorrect p at task 23"); mu_assert(q->tasks[24]->p == 1.000000, "Incorrect p at task 24"); mu_assert(q->tasks[25]->p == 1.500000, "Incorrect p at task 25"); mu_assert(q->tasks[26]->p == 2.000000, "Incorrect p at task 26"); mu_assert(q->tasks[27]->p == 1.000000, "Incorrect p at task 27"); mu_assert(q->tasks[28]->p == 1.500000, "Incorrect p at task 28"); mu_assert(q->tasks[29]->p == 2.000000, "Incorrect p at task 29"); mu_assert(q->tasks[30]->p == 1.000000, "Incorrect p at task 30"); mu_assert(q->tasks[31]->p == 1.500000, "Incorrect p at task 31"); mu_assert(q->tasks[32]->p == 2.000000, "Incorrect p at task 32"); mu_assert(q->tasks[33]->p == 1.000000, "Incorrect p at task 33"); mu_assert(q->tasks[34]->p == 1.500000, "Incorrect p at task 34"); mu_assert(q->tasks[35]->p == 2.000000, "Incorrect p at task 35"); mu_assert(q->tasks[36]->p == 1.000000, "Incorrect p at task 36"); mu_assert(q->tasks[37]->p == 1.500000, "Incorrect p at task 37"); mu_assert(q->tasks[38]->p == 2.000000, "Incorrect p at task 38"); mu_assert(q->tasks[39]->p == 1.000000, "Incorrect p at task 39"); mu_assert(q->tasks[40]->p == 1.500000, "Incorrect p at task 40"); mu_assert(q->tasks[41]->p == 2.000000, "Incorrect p at task 41"); mu_assert(q->tasks[42]->p == 1.000000, "Incorrect p at task 42"); mu_assert(q->tasks[43]->p == 1.500000, "Incorrect p at task 43"); mu_assert(q->tasks[44]->p == 2.000000, "Incorrect p at task 44"); mu_assert(q->tasks[45]->p == 1.000000, "Incorrect p at task 45"); mu_assert(q->tasks[46]->p == 1.500000, "Incorrect p at task 46"); mu_assert(q->tasks[47]->p == 2.000000, "Incorrect p at task 47"); mu_assert(q->tasks[48]->p == 1.000000, "Incorrect p at task 48"); mu_assert(q->tasks[49]->p == 1.500000, "Incorrect p at task 49"); mu_assert(q->tasks[50]->p == 2.000000, "Incorrect p at task 50"); mu_assert(q->tasks[51]->p == 1.000000, "Incorrect p at task 51"); mu_assert(q->tasks[52]->p == 1.500000, "Incorrect p at task 52"); mu_assert(q->tasks[53]->p == 2.000000, "Incorrect p at task 53"); mu_assert(q->tasks[54]->p == 1.000000, "Incorrect p at task 54"); mu_assert(q->tasks[55]->p == 1.500000, "Incorrect p at task 55"); mu_assert(q->tasks[56]->p == 2.000000, "Incorrect p at task 56"); mu_assert(q->tasks[57]->p == 1.000000, "Incorrect p at task 57"); mu_assert(q->tasks[58]->p == 1.500000, "Incorrect p at task 58"); mu_assert(q->tasks[59]->p == 2.000000, "Incorrect p at task 59"); mu_assert(q->tasks[60]->p == 1.000000, "Incorrect p at task 60"); mu_assert(q->tasks[61]->p == 1.500000, "Incorrect p at task 61"); mu_assert(q->tasks[62]->p == 2.000000, "Incorrect p at task 62"); mu_assert(q->tasks[63]->p == 1.000000, "Incorrect p at task 63"); mu_assert(q->tasks[64]->p == 1.500000, "Incorrect p at task 64"); mu_assert(q->tasks[65]->p == 2.000000, "Incorrect p at task 65"); mu_assert(q->tasks[66]->p == 1.000000, "Incorrect p at task 66"); mu_assert(q->tasks[67]->p == 1.500000, "Incorrect p at task 67"); mu_assert(q->tasks[68]->p == 2.000000, "Incorrect p at task 68"); mu_assert(q->tasks[69]->p == 1.000000, "Incorrect p at task 69"); mu_assert(q->tasks[70]->p == 1.500000, "Incorrect p at task 70"); mu_assert(q->tasks[71]->p == 2.000000, "Incorrect p at task 71"); mu_assert(q->tasks[0]->lambda == 1.000000, "Incorrect lambda at task 0"); mu_assert(q->tasks[1]->lambda == 1.000000, "Incorrect lambda at task 1"); mu_assert(q->tasks[2]->lambda == 1.000000, "Incorrect lambda at task 2"); mu_assert(q->tasks[3]->lambda == 5.000000, "Incorrect lambda at task 3"); mu_assert(q->tasks[4]->lambda == 5.000000, "Incorrect lambda at task 4"); mu_assert(q->tasks[5]->lambda == 5.000000, "Incorrect lambda at task 5"); mu_assert(q->tasks[6]->lambda == 1.000000, "Incorrect lambda at task 6"); mu_assert(q->tasks[7]->lambda == 1.000000, "Incorrect lambda at task 7"); mu_assert(q->tasks[8]->lambda == 1.000000, "Incorrect lambda at task 8"); mu_assert(q->tasks[9]->lambda == 5.000000, "Incorrect lambda at task 9"); mu_assert(q->tasks[10]->lambda == 5.000000, "Incorrect lambda at task 10"); mu_assert(q->tasks[11]->lambda == 5.000000, "Incorrect lambda at task 11"); mu_assert(q->tasks[12]->lambda == 1.000000, "Incorrect lambda at task 12"); mu_assert(q->tasks[13]->lambda == 1.000000, "Incorrect lambda at task 13"); mu_assert(q->tasks[14]->lambda == 1.000000, "Incorrect lambda at task 14"); mu_assert(q->tasks[15]->lambda == 5.000000, "Incorrect lambda at task 15"); mu_assert(q->tasks[16]->lambda == 5.000000, "Incorrect lambda at task 16"); mu_assert(q->tasks[17]->lambda == 5.000000, "Incorrect lambda at task 17"); mu_assert(q->tasks[18]->lambda == 1.000000, "Incorrect lambda at task 18"); mu_assert(q->tasks[19]->lambda == 1.000000, "Incorrect lambda at task 19"); mu_assert(q->tasks[20]->lambda == 1.000000, "Incorrect lambda at task 20"); mu_assert(q->tasks[21]->lambda == 5.000000, "Incorrect lambda at task 21"); mu_assert(q->tasks[22]->lambda == 5.000000, "Incorrect lambda at task 22"); mu_assert(q->tasks[23]->lambda == 5.000000, "Incorrect lambda at task 23"); mu_assert(q->tasks[24]->lambda == 1.000000, "Incorrect lambda at task 24"); mu_assert(q->tasks[25]->lambda == 1.000000, "Incorrect lambda at task 25"); mu_assert(q->tasks[26]->lambda == 1.000000, "Incorrect lambda at task 26"); mu_assert(q->tasks[27]->lambda == 5.000000, "Incorrect lambda at task 27"); mu_assert(q->tasks[28]->lambda == 5.000000, "Incorrect lambda at task 28"); mu_assert(q->tasks[29]->lambda == 5.000000, "Incorrect lambda at task 29"); mu_assert(q->tasks[30]->lambda == 1.000000, "Incorrect lambda at task 30"); mu_assert(q->tasks[31]->lambda == 1.000000, "Incorrect lambda at task 31"); mu_assert(q->tasks[32]->lambda == 1.000000, "Incorrect lambda at task 32"); mu_assert(q->tasks[33]->lambda == 5.000000, "Incorrect lambda at task 33"); mu_assert(q->tasks[34]->lambda == 5.000000, "Incorrect lambda at task 34"); mu_assert(q->tasks[35]->lambda == 5.000000, "Incorrect lambda at task 35"); mu_assert(q->tasks[36]->lambda == 1.000000, "Incorrect lambda at task 36"); mu_assert(q->tasks[37]->lambda == 1.000000, "Incorrect lambda at task 37"); mu_assert(q->tasks[38]->lambda == 1.000000, "Incorrect lambda at task 38"); mu_assert(q->tasks[39]->lambda == 5.000000, "Incorrect lambda at task 39"); mu_assert(q->tasks[40]->lambda == 5.000000, "Incorrect lambda at task 40"); mu_assert(q->tasks[41]->lambda == 5.000000, "Incorrect lambda at task 41"); mu_assert(q->tasks[42]->lambda == 1.000000, "Incorrect lambda at task 42"); mu_assert(q->tasks[43]->lambda == 1.000000, "Incorrect lambda at task 43"); mu_assert(q->tasks[44]->lambda == 1.000000, "Incorrect lambda at task 44"); mu_assert(q->tasks[45]->lambda == 5.000000, "Incorrect lambda at task 45"); mu_assert(q->tasks[46]->lambda == 5.000000, "Incorrect lambda at task 46"); mu_assert(q->tasks[47]->lambda == 5.000000, "Incorrect lambda at task 47"); mu_assert(q->tasks[48]->lambda == 1.000000, "Incorrect lambda at task 48"); mu_assert(q->tasks[49]->lambda == 1.000000, "Incorrect lambda at task 49"); mu_assert(q->tasks[50]->lambda == 1.000000, "Incorrect lambda at task 50"); mu_assert(q->tasks[51]->lambda == 5.000000, "Incorrect lambda at task 51"); mu_assert(q->tasks[52]->lambda == 5.000000, "Incorrect lambda at task 52"); mu_assert(q->tasks[53]->lambda == 5.000000, "Incorrect lambda at task 53"); mu_assert(q->tasks[54]->lambda == 1.000000, "Incorrect lambda at task 54"); mu_assert(q->tasks[55]->lambda == 1.000000, "Incorrect lambda at task 55"); mu_assert(q->tasks[56]->lambda == 1.000000, "Incorrect lambda at task 56"); mu_assert(q->tasks[57]->lambda == 5.000000, "Incorrect lambda at task 57"); mu_assert(q->tasks[58]->lambda == 5.000000, "Incorrect lambda at task 58"); mu_assert(q->tasks[59]->lambda == 5.000000, "Incorrect lambda at task 59"); mu_assert(q->tasks[60]->lambda == 1.000000, "Incorrect lambda at task 60"); mu_assert(q->tasks[61]->lambda == 1.000000, "Incorrect lambda at task 61"); mu_assert(q->tasks[62]->lambda == 1.000000, "Incorrect lambda at task 62"); mu_assert(q->tasks[63]->lambda == 5.000000, "Incorrect lambda at task 63"); mu_assert(q->tasks[64]->lambda == 5.000000, "Incorrect lambda at task 64"); mu_assert(q->tasks[65]->lambda == 5.000000, "Incorrect lambda at task 65"); mu_assert(q->tasks[66]->lambda == 1.000000, "Incorrect lambda at task 66"); mu_assert(q->tasks[67]->lambda == 1.000000, "Incorrect lambda at task 67"); mu_assert(q->tasks[68]->lambda == 1.000000, "Incorrect lambda at task 68"); mu_assert(q->tasks[69]->lambda == 5.000000, "Incorrect lambda at task 69"); mu_assert(q->tasks[70]->lambda == 5.000000, "Incorrect lambda at task 70"); mu_assert(q->tasks[71]->lambda == 5.000000, "Incorrect lambda at task 71"); mu_assert(q->tasks[0]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 0"); mu_assert(q->tasks[1]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 1"); mu_assert(q->tasks[2]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 2"); mu_assert(q->tasks[3]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 3"); mu_assert(q->tasks[4]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 4"); mu_assert(q->tasks[5]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 5"); mu_assert(q->tasks[6]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 6"); mu_assert(q->tasks[7]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 7"); mu_assert(q->tasks[8]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 8"); mu_assert(q->tasks[9]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 9"); mu_assert(q->tasks[10]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 10"); mu_assert(q->tasks[11]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 11"); mu_assert(q->tasks[12]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 12"); mu_assert(q->tasks[13]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 13"); mu_assert(q->tasks[14]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 14"); mu_assert(q->tasks[15]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 15"); mu_assert(q->tasks[16]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 16"); mu_assert(q->tasks[17]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 17"); mu_assert(q->tasks[18]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 18"); mu_assert(q->tasks[19]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 19"); mu_assert(q->tasks[20]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 20"); mu_assert(q->tasks[21]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 21"); mu_assert(q->tasks[22]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 22"); mu_assert(q->tasks[23]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 23"); mu_assert(q->tasks[24]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 24"); mu_assert(q->tasks[25]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 25"); mu_assert(q->tasks[26]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 26"); mu_assert(q->tasks[27]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 27"); mu_assert(q->tasks[28]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 28"); mu_assert(q->tasks[29]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 29"); mu_assert(q->tasks[30]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 30"); mu_assert(q->tasks[31]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 31"); mu_assert(q->tasks[32]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 32"); mu_assert(q->tasks[33]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 33"); mu_assert(q->tasks[34]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 34"); mu_assert(q->tasks[35]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 35"); mu_assert(q->tasks[36]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 36"); mu_assert(q->tasks[37]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 37"); mu_assert(q->tasks[38]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 38"); mu_assert(q->tasks[39]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 39"); mu_assert(q->tasks[40]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 40"); mu_assert(q->tasks[41]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 41"); mu_assert(q->tasks[42]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 42"); mu_assert(q->tasks[43]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 43"); mu_assert(q->tasks[44]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 44"); mu_assert(q->tasks[45]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 45"); mu_assert(q->tasks[46]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 46"); mu_assert(q->tasks[47]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 47"); mu_assert(q->tasks[48]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 48"); mu_assert(q->tasks[49]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 49"); mu_assert(q->tasks[50]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 50"); mu_assert(q->tasks[51]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 51"); mu_assert(q->tasks[52]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 52"); mu_assert(q->tasks[53]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 53"); mu_assert(q->tasks[54]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 54"); mu_assert(q->tasks[55]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 55"); mu_assert(q->tasks[56]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 56"); mu_assert(q->tasks[57]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 57"); mu_assert(q->tasks[58]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 58"); mu_assert(q->tasks[59]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 59"); mu_assert(q->tasks[60]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 60"); mu_assert(q->tasks[61]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 61"); mu_assert(q->tasks[62]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 62"); mu_assert(q->tasks[63]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 63"); mu_assert(q->tasks[64]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 64"); mu_assert(q->tasks[65]->kernelparam[0] == 0.500000, "Incorrect kernelparam 0 at task 65"); mu_assert(q->tasks[66]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 66"); mu_assert(q->tasks[67]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 67"); mu_assert(q->tasks[68]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 68"); mu_assert(q->tasks[69]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 69"); mu_assert(q->tasks[70]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 70"); mu_assert(q->tasks[71]->kernelparam[0] == 1.500000, "Incorrect kernelparam 0 at task 71"); mu_assert(q->tasks[0]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 0"); mu_assert(q->tasks[1]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 1"); mu_assert(q->tasks[2]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 2"); mu_assert(q->tasks[3]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 3"); mu_assert(q->tasks[4]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 4"); mu_assert(q->tasks[5]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 5"); mu_assert(q->tasks[6]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 6"); mu_assert(q->tasks[7]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 7"); mu_assert(q->tasks[8]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 8"); mu_assert(q->tasks[9]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 9"); mu_assert(q->tasks[10]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 10"); mu_assert(q->tasks[11]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 11"); mu_assert(q->tasks[12]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 12"); mu_assert(q->tasks[13]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 13"); mu_assert(q->tasks[14]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 14"); mu_assert(q->tasks[15]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 15"); mu_assert(q->tasks[16]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 16"); mu_assert(q->tasks[17]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 17"); mu_assert(q->tasks[18]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 18"); mu_assert(q->tasks[19]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 19"); mu_assert(q->tasks[20]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 20"); mu_assert(q->tasks[21]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 21"); mu_assert(q->tasks[22]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 22"); mu_assert(q->tasks[23]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 23"); mu_assert(q->tasks[24]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 24"); mu_assert(q->tasks[25]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 25"); mu_assert(q->tasks[26]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 26"); mu_assert(q->tasks[27]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 27"); mu_assert(q->tasks[28]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 28"); mu_assert(q->tasks[29]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 29"); mu_assert(q->tasks[30]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 30"); mu_assert(q->tasks[31]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 31"); mu_assert(q->tasks[32]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 32"); mu_assert(q->tasks[33]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 33"); mu_assert(q->tasks[34]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 34"); mu_assert(q->tasks[35]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 35"); mu_assert(q->tasks[36]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 36"); mu_assert(q->tasks[37]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 37"); mu_assert(q->tasks[38]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 38"); mu_assert(q->tasks[39]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 39"); mu_assert(q->tasks[40]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 40"); mu_assert(q->tasks[41]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 41"); mu_assert(q->tasks[42]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 42"); mu_assert(q->tasks[43]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 43"); mu_assert(q->tasks[44]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 44"); mu_assert(q->tasks[45]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 45"); mu_assert(q->tasks[46]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 46"); mu_assert(q->tasks[47]->kernelparam[1] == 7.000000, "Incorrect kernelparam 1 at task 47"); mu_assert(q->tasks[48]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 48"); mu_assert(q->tasks[49]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 49"); mu_assert(q->tasks[50]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 50"); mu_assert(q->tasks[51]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 51"); mu_assert(q->tasks[52]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 52"); mu_assert(q->tasks[53]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 53"); mu_assert(q->tasks[54]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 54"); mu_assert(q->tasks[55]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 55"); mu_assert(q->tasks[56]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 56"); mu_assert(q->tasks[57]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 57"); mu_assert(q->tasks[58]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 58"); mu_assert(q->tasks[59]->kernelparam[1] == 11.000000, "Incorrect kernelparam 1 at task 59"); mu_assert(q->tasks[60]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 60"); mu_assert(q->tasks[61]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 61"); mu_assert(q->tasks[62]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 62"); mu_assert(q->tasks[63]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 63"); mu_assert(q->tasks[64]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 64"); mu_assert(q->tasks[65]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 65"); mu_assert(q->tasks[66]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 66"); mu_assert(q->tasks[67]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 67"); mu_assert(q->tasks[68]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 68"); mu_assert(q->tasks[69]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 69"); mu_assert(q->tasks[70]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 70"); mu_assert(q->tasks[71]->kernelparam[1] == 13.000000, "Incorrect kernelparam 1 at task 71"); mu_assert(q->tasks[0]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 0"); mu_assert(q->tasks[1]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 1"); mu_assert(q->tasks[2]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 2"); mu_assert(q->tasks[3]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 3"); mu_assert(q->tasks[4]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 4"); mu_assert(q->tasks[5]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 5"); mu_assert(q->tasks[6]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 6"); mu_assert(q->tasks[7]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 7"); mu_assert(q->tasks[8]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 8"); mu_assert(q->tasks[9]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 9"); mu_assert(q->tasks[10]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 10"); mu_assert(q->tasks[11]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 11"); mu_assert(q->tasks[12]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 12"); mu_assert(q->tasks[13]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 13"); mu_assert(q->tasks[14]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 14"); mu_assert(q->tasks[15]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 15"); mu_assert(q->tasks[16]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 16"); mu_assert(q->tasks[17]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 17"); mu_assert(q->tasks[18]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 18"); mu_assert(q->tasks[19]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 19"); mu_assert(q->tasks[20]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 20"); mu_assert(q->tasks[21]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 21"); mu_assert(q->tasks[22]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 22"); mu_assert(q->tasks[23]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 23"); mu_assert(q->tasks[24]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 24"); mu_assert(q->tasks[25]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 25"); mu_assert(q->tasks[26]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 26"); mu_assert(q->tasks[27]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 27"); mu_assert(q->tasks[28]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 28"); mu_assert(q->tasks[29]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 29"); mu_assert(q->tasks[30]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 30"); mu_assert(q->tasks[31]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 31"); mu_assert(q->tasks[32]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 32"); mu_assert(q->tasks[33]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 33"); mu_assert(q->tasks[34]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 34"); mu_assert(q->tasks[35]->kernelparam[2] == 3.000000, "Incorrect kernelparam 2 at task 35"); mu_assert(q->tasks[36]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 36"); mu_assert(q->tasks[37]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 37"); mu_assert(q->tasks[38]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 38"); mu_assert(q->tasks[39]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 39"); mu_assert(q->tasks[40]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 40"); mu_assert(q->tasks[41]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 41"); mu_assert(q->tasks[42]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 42"); mu_assert(q->tasks[43]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 43"); mu_assert(q->tasks[44]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 44"); mu_assert(q->tasks[45]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 45"); mu_assert(q->tasks[46]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 46"); mu_assert(q->tasks[47]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 47"); mu_assert(q->tasks[48]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 48"); mu_assert(q->tasks[49]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 49"); mu_assert(q->tasks[50]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 50"); mu_assert(q->tasks[51]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 51"); mu_assert(q->tasks[52]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 52"); mu_assert(q->tasks[53]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 53"); mu_assert(q->tasks[54]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 54"); mu_assert(q->tasks[55]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 55"); mu_assert(q->tasks[56]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 56"); mu_assert(q->tasks[57]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 57"); mu_assert(q->tasks[58]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 58"); mu_assert(q->tasks[59]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 59"); mu_assert(q->tasks[60]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 60"); mu_assert(q->tasks[61]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 61"); mu_assert(q->tasks[62]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 62"); mu_assert(q->tasks[63]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 63"); mu_assert(q->tasks[64]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 64"); mu_assert(q->tasks[65]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 65"); mu_assert(q->tasks[66]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 66"); mu_assert(q->tasks[67]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 67"); mu_assert(q->tasks[68]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 68"); mu_assert(q->tasks[69]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 69"); mu_assert(q->tasks[70]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 70"); mu_assert(q->tasks[71]->kernelparam[2] == 5.000000, "Incorrect kernelparam 2 at task 71"); 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() { struct GenTask *new = gensvm_init_task(); struct GenTask *old = gensvm_init_task(); // start test code // mu_assert(gensvm_kernel_changed(new, NULL) == true, "Incorrect kernel changed (1)"); mu_assert(gensvm_kernel_changed(new, old) == false, "Incorrect kernel changed (2)"); new->kerneltype = K_RBF; mu_assert(gensvm_kernel_changed(new, old) == true, "Incorrect kernel changed (3)"); // rbf kernel old->kerneltype = K_RBF; old->kernelparam = Malloc(double, 1); old->kernelparam[0] = 1.0; new->kernelparam = Malloc(double, 1); new->kernelparam[0] = 1.0; mu_assert(gensvm_kernel_changed(new, old) == false, "Incorrect kernel changed (4)"); new->kernelparam[0] = 2.0; mu_assert(gensvm_kernel_changed(new, old) == true, "Incorrect kernel changed (5)"); free(old->kernelparam); free(new->kernelparam); // poly kernel old->kerneltype = K_POLY; new->kerneltype = K_POLY; old->kernelparam = Malloc(double, 3); old->kernelparam[0] = 1.0; old->kernelparam[1] = 2.0; old->kernelparam[2] = 3.0; new->kernelparam = Malloc(double, 3); new->kernelparam[0] = 1.0; new->kernelparam[1] = 2.0; new->kernelparam[2] = 3.0; mu_assert(gensvm_kernel_changed(new, old) == false, "Incorrect kernel changed (6)"); new->kernelparam[2] = 5.0; mu_assert(gensvm_kernel_changed(new, old) == true, "Incorrect kernel changed (7)"); free(old->kernelparam); free(new->kernelparam); // sigmoid kernel old->kerneltype = K_SIGMOID; new->kerneltype = K_SIGMOID; old->kernelparam = Malloc(double, 2); old->kernelparam[0] = 1.0; old->kernelparam[1] = 2.0; new->kernelparam = Malloc(double, 2); new->kernelparam[0] = 1.0; new->kernelparam[1] = 2.0; mu_assert(gensvm_kernel_changed(new, old) == false, "Incorrect kernel changed (8)"); new->kernelparam[1] = 5.0; mu_assert(gensvm_kernel_changed(new, old) == true, "Incorrect kernel changed (9)"); // end test code // gensvm_free_task(new); gensvm_free_task(old); return NULL; } char *test_kernel_folds() { mu_test_missing(); return NULL; } char *test_train_queue() { mu_test_missing(); return NULL; } char *test_gridsearch_progress_linear() { FILE *fid = NULL; const char *filename = "./data/test_progress_string.txt"; GENSVM_OUTPUT_FILE = fopen(filename, "w"); struct GenTask *task = gensvm_init_task(); task->ID = 0; // start test code // gensvm_gridsearch_progress(task, 10, 0.5, 0.123, 0.7); fclose(GENSVM_OUTPUT_FILE); char buffer[GENSVM_MAX_LINE_LENGTH]; fid = fopen(filename, "r"); fgets(buffer, GENSVM_MAX_LINE_LENGTH, fid); const char *expected = ("(001/010)\teps = 1e-06\tw = 1\tk = 0.00\t" "l = 1.000000\tp = 1.00\t\t0.500% (0.123s)\t" "(best = 0.700%)\n"); mu_assert(strcmp(buffer, expected) == 0, "Incorrect progress string"); fclose(fid); // end test code // gensvm_free_task(task); return NULL; } char *test_gridsearch_progress_rbf() { FILE *fid = NULL; const char *filename = "./data/test_progress_string.txt"; GENSVM_OUTPUT_FILE = fopen(filename, "w"); struct GenTask *task = gensvm_init_task(); task->ID = 0; task->kerneltype = K_RBF; task->kernelparam = Malloc(double, 1); task->kernelparam[0] = 3.0; // start test code // gensvm_gridsearch_progress(task, 10, 0.5, 0.123, 0.7); fclose(GENSVM_OUTPUT_FILE); char buffer[GENSVM_MAX_LINE_LENGTH]; fid = fopen(filename, "r"); fgets(buffer, GENSVM_MAX_LINE_LENGTH, fid); const char *expected = ("(001/010)\tg = 3.000\teps = 1e-06\tw = 1\t" "k = 0.00\tl = 1.000000\tp = 1.00\t\t0.500% (0.123s)\t" "(best = 0.700%)\n"); mu_assert(strcmp(buffer, expected) == 0, "Incorrect progress string"); fclose(fid); // end test code // gensvm_free_task(task); return NULL; } char *test_gridsearch_progress_poly() { FILE *fid = NULL; const char *filename = "./data/test_progress_string.txt"; GENSVM_OUTPUT_FILE = fopen(filename, "w"); struct GenTask *task = gensvm_init_task(); task->ID = 0; task->kerneltype = K_POLY; task->kernelparam = Malloc(double, 3); task->kernelparam[0] = 3.0; task->kernelparam[1] = 1.0; task->kernelparam[2] = 2.0; // start test code // gensvm_gridsearch_progress(task, 10, 0.5, 0.123, 0.7); fclose(GENSVM_OUTPUT_FILE); char buffer[GENSVM_MAX_LINE_LENGTH]; fid = fopen(filename, "r"); fgets(buffer, GENSVM_MAX_LINE_LENGTH, fid); const char *expected = ("(001/010)\t" "d = 2.00\tc = 1.00\tg = 3.000\t" "eps = 1e-06\tw = 1\tk = 0.00\t" "l = 1.000000\tp = 1.00\t\t0.500% (0.123s)\t" "(best = 0.700%)\n"); mu_assert(strcmp(buffer, expected) == 0, "Incorrect progress string"); fclose(fid); // end test code // gensvm_free_task(task); return NULL; } char *test_gridsearch_progress_sigmoid() { FILE *fid = NULL; const char *filename = "./data/test_progress_string.txt"; GENSVM_OUTPUT_FILE = fopen(filename, "w"); struct GenTask *task = gensvm_init_task(); task->ID = 0; task->kerneltype = K_SIGMOID; task->kernelparam = Malloc(double, 2); task->kernelparam[0] = 3.0; task->kernelparam[1] = 1.0; // start test code // gensvm_gridsearch_progress(task, 10, 0.5, 0.123, 0.7); fclose(GENSVM_OUTPUT_FILE); char buffer[GENSVM_MAX_LINE_LENGTH]; fid = fopen(filename, "r"); fgets(buffer, GENSVM_MAX_LINE_LENGTH, fid); const char *expected = ("(001/010)\t" "c = 1.00\tg = 3.000\t" "eps = 1e-06\tw = 1\tk = 0.00\t" "l = 1.000000\tp = 1.00\t\t0.500% (0.123s)\t" "(best = 0.700%)\n"); mu_assert(strcmp(buffer, expected) == 0, "Incorrect progress string"); fclose(fid); // end test code // gensvm_free_task(task); return NULL; } char *all_tests() { mu_suite_start(); mu_run_test(test_fill_queue_nokernel); mu_run_test(test_fill_queue_kernel); mu_run_test(test_kernel_changed); mu_run_test(test_kernel_folds); mu_run_test(test_train_queue); mu_run_test(test_gridsearch_progress_linear); mu_run_test(test_gridsearch_progress_rbf); mu_run_test(test_gridsearch_progress_poly); mu_run_test(test_gridsearch_progress_sigmoid); return NULL; } RUN_TESTS(all_tests);