aboutsummaryrefslogtreecommitdiff
path: root/tests/src/test_gensvm_consistency.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/test_gensvm_consistency.c')
-rw-r--r--tests/src/test_gensvm_consistency.c98
1 files changed, 96 insertions, 2 deletions
diff --git a/tests/src/test_gensvm_consistency.c b/tests/src/test_gensvm_consistency.c
index f5e90ff..af0a0f3 100644
--- a/tests/src/test_gensvm_consistency.c
+++ b/tests/src/test_gensvm_consistency.c
@@ -25,16 +25,110 @@
*/
#include "minunit.h"
+#include "gensvm_consistency.h"
-char *test_1()
+char *test_doublesort()
{
+ double a = 1.0;
+ double b = 2.0;
+
+ mu_assert(doublesort(&b, &a) == true, "Incorrect doublesort (1)");
+ mu_assert(doublesort(&a, &b) == false, "Incorrect doublesort (2)");
+ mu_assert(doublesort(&a, &a) == false, "Incorrect doublesort (3)");
+
+ return NULL;
+}
+
+char *test_percentile_1()
+{
+ double *values = Malloc(double, 1);
+ values[0] = 0.1368311165400936;
+
+ // start test code //
+ mu_assert(fabs(gensvm_percentile(values, 1, 25.0) -
+ 0.1368311165400936) < 1e-16,
+ "Incorrect percentile");
+ // end test code //
+ free(values);
+
+ return NULL;
+}
+
+char *test_percentile()
+{
+ double *values = Malloc(double, 10);
+ values[0] = 0.1368311165400936;
+ values[1] = 0.0864373686918369;
+ values[2] = 0.9959483430066688;
+ values[3] = 0.2946638351338509;
+ values[4] = 0.3535927892606028;
+ values[5] = 0.5898175818278500;
+ values[6] = 0.1769525979717794;
+ values[7] = 0.3114487168265636;
+ values[8] = 0.3895012665017124;
+ values[9] = 0.3229492282960943;
+
+ // start test code //
+ mu_assert(fabs(gensvm_percentile(values, 10, 25.0) -
+ 0.176952597971779) < 1e-14,
+ "Incorrect 25th percentile");
+ mu_assert(fabs(gensvm_percentile(values, 10, 50.0) -
+ 0.317198972561329) < 1e-14,
+ "Incorrect 50th percentile");
+ mu_assert(fabs(gensvm_percentile(values, 10, 75.0) -
+ 0.389501266501712) < 1e-14,
+ "Incorrect 75th percentile");
+ mu_assert(fabs(gensvm_percentile(values, 10, 90.0) -
+ 0.792882962417259) < 1e-14,
+ "Incorrect 90th percentile");
+ // end test code //
+ free(values);
+
+ return NULL;
+}
+
+char *test_top_queue()
+{
+ int i, N = 10;
+ struct GenQueue *q = gensvm_init_queue();
+ q->tasks = Malloc(struct GenTask *, N);
+ q->N = N;
+ for (i=0; i<N; i++) {
+ q->tasks[i] = gensvm_init_task();
+ q->tasks[i]->ID = i+1;
+ }
+
+ q->tasks[0]->performance = 0.1368311165400936;
+ q->tasks[1]->performance = 0.0864373686918369;
+ q->tasks[2]->performance = 0.9959483430066688; //
+ q->tasks[3]->performance = 0.2946638351338509;
+ q->tasks[4]->performance = 0.3535927892606028;
+ q->tasks[5]->performance = 0.5898175818278500; //
+ q->tasks[6]->performance = 0.1769525979717794;
+ q->tasks[7]->performance = 0.3114487168265636;
+ q->tasks[8]->performance = 0.3895012665017124; //
+ q->tasks[9]->performance = 0.3229492282960943;
+
+ // start test code //
+
+ // boundary should be determined at: 0.389501266501712
+ struct GenQueue *nq = gensvm_top_queue(q, 75.0);
+ mu_assert(nq->N == 3, "Incorrect size of top queue");
+
+ // end test code //
+ gensvm_free_queue(q);
+ gensvm_free_queue(nq);
+
return NULL;
}
char *all_tests()
{
mu_suite_start();
- mu_run_test(test_1);
+ mu_run_test(test_doublesort);
+ mu_run_test(test_percentile_1);
+ mu_run_test(test_percentile);
+ mu_run_test(test_top_queue);
return NULL;
}