[tests] add test-vecutils
authorPaul Brossier <piem@piem.org>
Fri, 21 Dec 2018 13:08:58 +0000 (14:08 +0100)
committerPaul Brossier <piem@piem.org>
Fri, 21 Dec 2018 13:08:58 +0000 (14:08 +0100)
tests/src/test-vecutils.c [new file with mode: 0644]

diff --git a/tests/src/test-vecutils.c b/tests/src/test-vecutils.c
new file mode 100644 (file)
index 0000000..5964a76
--- /dev/null
@@ -0,0 +1,65 @@
+#include "aubio.h"
+#include "utils_tests.h"
+
+void assert_fvec_all_almost_equal(fvec_t *vec, smpl_t scalar, smpl_t err)
+{
+  uint_t i;
+  for (i = 0; i < vec->length; i++) {
+    assert( fabs(vec->data[i] - scalar) < (smpl_t)err );
+  }
+}
+
+int main (void)
+{
+  uint_t length = 10;
+
+  fvec_t * vec = new_fvec(length);
+
+  fvec_set_all(vec, 2);
+  fvec_exp(vec);
+  assert_fvec_all_almost_equal(vec, exp(2), 1e-10);
+
+  fvec_set_all(vec, 0);
+  fvec_cos(vec);
+  assert_fvec_all_almost_equal(vec, 1., 1e-10);
+
+  fvec_set_all(vec, 0);
+  fvec_sin(vec);
+  assert_fvec_all_almost_equal(vec, 0., 1e-10);
+
+  fvec_set_all(vec, -1);
+  fvec_abs(vec);
+  assert_fvec_all_almost_equal(vec, 1., 1e-10);
+
+  fvec_set_all(vec, 4);
+  fvec_sqrt(vec);
+  assert_fvec_all_almost_equal(vec, 2., 1e-10);
+
+  fvec_set_all(vec, 10.);
+  fvec_log10(vec);
+  assert_fvec_all_almost_equal(vec, 1., 1e-10);
+
+  fvec_set_all(vec, 1.);
+  fvec_log(vec);
+  assert_fvec_all_almost_equal(vec, 0., 1e-10);
+
+  fvec_set_all(vec, 1.6);
+  fvec_floor(vec);
+  assert_fvec_all_almost_equal(vec, 1., 1e-10);
+
+  fvec_set_all(vec, 1.6);
+  fvec_ceil(vec);
+  assert_fvec_all_almost_equal(vec, 2., 1e-10);
+
+  fvec_set_all(vec, 1.6);
+  fvec_round(vec);
+  assert_fvec_all_almost_equal(vec, 2., 1e-10);
+
+  fvec_set_all(vec, 2);
+  fvec_pow(vec, 3);
+  assert_fvec_all_almost_equal(vec, 8., 1e-10);
+
+  if (vec)
+    del_fvec(vec);
+  return 0;
+}