aboutsummaryrefslogtreecommitdiff
path: root/src/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/test.c')
-rw-r--r--src/test.c127
1 files changed, 127 insertions, 0 deletions
diff --git a/src/test.c b/src/test.c
index 335d473..6a0bc25 100644
--- a/src/test.c
+++ b/src/test.c
@@ -1633,6 +1633,130 @@ int test_find_peaks_array(char *err)
return 0;
}
+int test_ipow(char *err)
+{
+ /* Tests the ipow() function. */
+ size_t result;
+
+ result = ipow(2,2);
+
+ if (result != 4) {
+ sprintf(err, "ipow(2,2) returned %zu, but expected %i", result, 4);
+ return 1;
+ }
+
+ result = ipow(2,3);
+
+ if (result != 8) {
+ sprintf(err, "ipow(2,3) returned %zu, but expected %i", result, 8);
+ return 1;
+ }
+
+ return 0;
+}
+
+int test_product(char *err)
+{
+ /* Tests the product() function. */
+ size_t i, j;
+ size_t result[1000];
+
+ size_t expected1[4][2] = {{0,0},{0,1},{1,0},{1,1}};
+
+ product(2,2,result);
+
+ for (i = 0; i < 4; i++) {
+ for (j = 0; j < 2; j++) {
+ if (result[i*2+j] != expected1[i][j]) {
+ sprintf(err, "result[%zu,%zu] = %zu, but expected %zu", i, j, result[i*2+j], expected1[i][j]);
+ return 1;
+ }
+ }
+ }
+
+ size_t expected2[8][3] = {{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}};
+
+ product(2,3,result);
+
+ for (i = 0; i < 8; i++) {
+ for (j = 0; j < 3; j++) {
+ if (result[i*3+j] != expected2[i][j]) {
+ sprintf(err, "result[%zu,%zu] = %zu, but expected %zu", i, j, result[i*3+j], expected2[i][j]);
+ return 1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+int test_unique_vertices(char *err)
+{
+ /* Tests the unique_vertices() function. */
+ size_t i, j;
+ size_t result[1000];
+ size_t nvertices;
+
+ int id1[2] = {IDP_E_MINUS, IDP_E_MINUS};
+ size_t expected1[3][2] = {{0,0},{0,1},{1,1}};
+
+ unique_vertices(id1,LEN(id1),2,result,&nvertices);
+
+ if (nvertices != 3) {
+ sprintf(err, "unique vertices returned nvertices = %zu, but expected %i", nvertices, 3);
+ return 1;
+ }
+
+ for (i = 0; i < nvertices; i++) {
+ for (j = 0; j < 2; j++) {
+ if (result[i*2+j] != expected1[i][j]) {
+ sprintf(err, "result[%zu,%zu] = %zu, but expected %zu", i, j, result[i*2+j], expected1[i][j]);
+ return 1;
+ }
+ }
+ }
+
+ int id2[3] = {IDP_E_MINUS, IDP_MU_MINUS, IDP_TAU_MINUS};
+ size_t expected2[8][3] = {{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}};
+
+ unique_vertices(id2,LEN(id2),2,result,&nvertices);
+
+ if (nvertices != 8) {
+ sprintf(err, "unique vertices returned nvertices = %zu, but expected %i", nvertices, 8);
+ return 1;
+ }
+
+ for (i = 0; i < 8; i++) {
+ for (j = 0; j < 3; j++) {
+ if (result[i*3+j] != expected2[i][j]) {
+ sprintf(err, "result[%zu,%zu] = %zu, but expected %zu", i, j, result[i*3+j], expected2[i][j]);
+ return 1;
+ }
+ }
+ }
+
+ int id3[3] = {IDP_E_MINUS, IDP_E_MINUS, IDP_MU_MINUS};
+ size_t expected3[6][3] = {{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,1,0},{1,1,1}};
+
+ unique_vertices(id3,LEN(id3),2,result,&nvertices);
+
+ if (nvertices != 6) {
+ sprintf(err, "unique vertices returned nvertices = %zu, but expected %i", nvertices, 6);
+ return 1;
+ }
+
+ for (i = 0; i < nvertices; i++) {
+ for (j = 0; j < 3; j++) {
+ if (result[i*3+j] != expected3[i][j]) {
+ sprintf(err, "result[%zu,%zu] = %zu, but expected %zu", i, j, result[i*3+j], expected3[i][j]);
+ return 1;
+ }
+ }
+ }
+
+ return 0;
+}
+
struct tests {
testFunction *test;
char *name;
@@ -1674,6 +1798,9 @@ struct tests {
{test_quad, "test_quad"},
{test_quad_noise, "test_quad_noise"},
{test_find_peaks_array, "test_find_peaks_array"},
+ {test_ipow, "test_ipow"},
+ {test_product, "test_product"},
+ {test_unique_vertices, "test_unique_vertices"},
};
int main(int argc, char **argv)