[tests] improve test-cvec
[aubio.git] / tests / src / test-cvec.c
index c1e6bca..6e16ea5 100644 (file)
@@ -3,46 +3,75 @@
 
 int main (void)
 {
-  uint_t i, window_size = 16; // window size
-  cvec_t * complex_vector = new_cvec (window_size); // input buffer
-  uint_t rand_times = 4;
-
-  utils_init_random();
-
-  while (rand_times -- ) {
-    // fill with random phas and norm
-    for ( i = 0; i < complex_vector->length; i++ ) {
-      complex_vector->norm[i] = ( 2. / RAND_MAX * random() - 1. );
-      complex_vector->phas[i] = ( 2. / RAND_MAX * random() - 1. ) * M_PI;
-    }
-    // print the vector
-    cvec_print(complex_vector);
-  }
+  uint_t i, window_size = 16;
+  cvec_t * complex_vector = new_cvec(window_size);
+  cvec_t * other_cvector = new_cvec(window_size);
 
-  // set all vector elements to `0`
-  cvec_norm_zeros(complex_vector);
+  assert(cvec_norm_get_data(complex_vector) == complex_vector->norm);
+  assert(cvec_phas_get_data(complex_vector) == complex_vector->phas);
+  assert(complex_vector->length == window_size / 2 + 1);
+
+  // all elements are initialized to 0
   for ( i = 0; i < complex_vector->length; i++ ) {
     assert( complex_vector->norm[i] == 0. );
-    // assert( complex_vector->phas[i] == 0 );
+    assert( complex_vector->phas[i] == 0. );
   }
+
+  cvec_norm_set_sample(complex_vector, 2., 1);
+  assert(cvec_norm_get_sample(complex_vector, 1));
+
+  cvec_phas_set_sample(complex_vector, 2., 1);
+  assert(cvec_phas_get_sample(complex_vector, 1));
+
   cvec_print(complex_vector);
 
-  // set all vector elements to `1`
+  // set all norm and phas elements to 0
+  cvec_zeros(complex_vector);
+  for ( i = 0; i < complex_vector->length; i++ ) {
+    assert( complex_vector->norm[i] == 0. );
+    assert( complex_vector->phas[i] == 0. );
+  }
+
+  // set all norm elements to 1
   cvec_norm_ones(complex_vector);
   for ( i = 0; i < complex_vector->length; i++ ) {
     assert( complex_vector->norm[i] == 1. );
-    // assert( complex_vector->phas[i] == 0 );
   }
-  cvec_print(complex_vector);
 
-  cvec_zeros(complex_vector);
-  cvec_phas_zeros(complex_vector);
+  // set all norm elements to 0
   cvec_norm_zeros(complex_vector);
-  cvec_norm_ones(complex_vector);
+  for ( i = 0; i < complex_vector->length; i++ ) {
+    assert( complex_vector->norm[i] == 0. );
+  }
+
+  // set all phas elements to 1
   cvec_phas_ones(complex_vector);
+  for ( i = 0; i < complex_vector->length; i++ ) {
+    assert( complex_vector->phas[i] == 1. );
+  }
+
+  // set all phas elements to 0
+  cvec_phas_zeros(complex_vector);
+  for ( i = 0; i < complex_vector->length; i++ ) {
+    assert( complex_vector->phas[i] == 0. );
+  }
+
+  cvec_copy(complex_vector, other_cvector);
+  // copy to self
   cvec_copy(complex_vector, complex_vector);
+  // copy to a different size fails
+  del_cvec(other_cvector);
+  other_cvector = new_cvec(window_size + 2);
+  cvec_copy(complex_vector, other_cvector);
+
+  if (complex_vector)
+    del_cvec(complex_vector);
+  if (other_cvector)
+    del_cvec(other_cvector);
+
+  // wrong parameters
+  assert(new_cvec(-1) == NULL);
+  assert(new_cvec(0) == NULL);
 
-  // destroy it
-  del_cvec(complex_vector);
   return 0;
 }