[tests] improve test-cvec
[aubio.git] / tests / src / test-cvec.c
1 #include "aubio.h"
2 #include "utils_tests.h"
3
4 int main (void)
5 {
6   uint_t i, window_size = 16;
7   cvec_t * complex_vector = new_cvec(window_size);
8   cvec_t * other_cvector = new_cvec(window_size);
9
10   assert(cvec_norm_get_data(complex_vector) == complex_vector->norm);
11   assert(cvec_phas_get_data(complex_vector) == complex_vector->phas);
12   assert(complex_vector->length == window_size / 2 + 1);
13
14   // all elements are initialized to 0
15   for ( i = 0; i < complex_vector->length; i++ ) {
16     assert( complex_vector->norm[i] == 0. );
17     assert( complex_vector->phas[i] == 0. );
18   }
19
20   cvec_norm_set_sample(complex_vector, 2., 1);
21   assert(cvec_norm_get_sample(complex_vector, 1));
22
23   cvec_phas_set_sample(complex_vector, 2., 1);
24   assert(cvec_phas_get_sample(complex_vector, 1));
25
26   cvec_print(complex_vector);
27
28   // set all norm and phas elements to 0
29   cvec_zeros(complex_vector);
30   for ( i = 0; i < complex_vector->length; i++ ) {
31     assert( complex_vector->norm[i] == 0. );
32     assert( complex_vector->phas[i] == 0. );
33   }
34
35   // set all norm elements to 1
36   cvec_norm_ones(complex_vector);
37   for ( i = 0; i < complex_vector->length; i++ ) {
38     assert( complex_vector->norm[i] == 1. );
39   }
40
41   // set all norm elements to 0
42   cvec_norm_zeros(complex_vector);
43   for ( i = 0; i < complex_vector->length; i++ ) {
44     assert( complex_vector->norm[i] == 0. );
45   }
46
47   // set all phas elements to 1
48   cvec_phas_ones(complex_vector);
49   for ( i = 0; i < complex_vector->length; i++ ) {
50     assert( complex_vector->phas[i] == 1. );
51   }
52
53   // set all phas elements to 0
54   cvec_phas_zeros(complex_vector);
55   for ( i = 0; i < complex_vector->length; i++ ) {
56     assert( complex_vector->phas[i] == 0. );
57   }
58
59   cvec_copy(complex_vector, other_cvector);
60   // copy to self
61   cvec_copy(complex_vector, complex_vector);
62   // copy to a different size fails
63   del_cvec(other_cvector);
64   other_cvector = new_cvec(window_size + 2);
65   cvec_copy(complex_vector, other_cvector);
66
67   if (complex_vector)
68     del_cvec(complex_vector);
69   if (other_cvector)
70     del_cvec(other_cvector);
71
72   // wrong parameters
73   assert(new_cvec(-1) == NULL);
74   assert(new_cvec(0) == NULL);
75
76   return 0;
77 }