diff options
Diffstat (limited to 'src/test.c')
-rw-r--r-- | src/test.c | 127 |
1 files changed, 127 insertions, 0 deletions
@@ -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) |