aboutsummaryrefslogtreecommitdiff
path: root/tests/src/test_gensvm_simplex.c
blob: c13c4eaf5679234dbf3db60f41a550dc5bfc8c5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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);