From 7e35b375ba2022da23a46afda00d575aaa5c9206 Mon Sep 17 00:00:00 2001 From: Paul Brossier Date: Sun, 3 Mar 2013 14:09:48 -0500 Subject: [PATCH] tests/src/: improve examples --- tests/src/test-cvec.c | 42 +++++++++-- tests/src/test-delnull.c | 10 +++ tests/src/test-fmat.c | 29 ++++++-- tests/src/test-fvec.c | 42 ++++++++--- tests/src/test-lvec.c | 13 ++-- tests/src/test-mathutils-window.c | 59 +++++++--------- tests/src/test-mathutils.c | 112 +++++++++++++++++++++++++++--- 7 files changed, 232 insertions(+), 75 deletions(-) create mode 100644 tests/src/test-delnull.c diff --git a/tests/src/test-cvec.c b/tests/src/test-cvec.c index f2e5cf05..a7d80427 100644 --- a/tests/src/test-cvec.c +++ b/tests/src/test-cvec.c @@ -1,11 +1,39 @@ #include +#include "utils_tests.h" -int main(){ - /* allocate some memory */ - uint_t win_s = 1024; /* window size */ - cvec_t * sp = new_cvec (win_s); /* input buffer */ - del_cvec(sp); +int main () +{ + uint_t i, window_size = 16; // window size + utils_init_random(); + cvec_t * complex_vector = new_cvec (window_size); // input buffer + uint_t rand_times = 4; - return 0; -} + 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); + } + + // set all vector 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 ); + } + cvec_print(complex_vector); + // set all vector elements to `1` + cvec_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); + // destroy it + del_cvec(complex_vector); + return 0; +} diff --git a/tests/src/test-delnull.c b/tests/src/test-delnull.c new file mode 100644 index 00000000..80604b96 --- /dev/null +++ b/tests/src/test-delnull.c @@ -0,0 +1,10 @@ +#include +#include + +int main () +{ + del_fvec(NULL); + del_lvec(NULL); + del_cvec(NULL); + return 0; +} diff --git a/tests/src/test-fmat.c b/tests/src/test-fmat.c index 89daa29b..edb3fcf4 100644 --- a/tests/src/test-fmat.c +++ b/tests/src/test-fmat.c @@ -1,11 +1,26 @@ #include +#include -int main(){ - uint_t length = 1024; /* length */ - uint_t height = 1024; /* height */ - fmat_t * mat = new_fmat (length, height); /* input buffer */ - fmat_print(mat); - del_fmat(mat); - return 0; +// create a new matrix and fill it with i * 1. + j * .1, where i is the row, +// and j the column. + +int main () +{ + uint_t height = 3, length = 9, i, j; + // create fmat_t object + fmat_t * mat = new_fmat (length, height); + for ( i = 0; i < mat->height; i++ ) { + for ( j = 0; j < mat->length; j++ ) { + // all elements are already initialized to 0. + assert(mat->data[i][j] == 0); + // setting element of row i, column j + mat->data[i][j] = i * 1. + j *.1; + } + } + // print out matrix + fmat_print(mat); + // destroy it + del_fmat(mat); + return 0; } diff --git a/tests/src/test-fvec.c b/tests/src/test-fvec.c index a68aa531..8a1e63c9 100644 --- a/tests/src/test-fvec.c +++ b/tests/src/test-fvec.c @@ -1,20 +1,42 @@ #include #include -int main(){ - uint_t buffer_size = 1024; - fvec_t * in = new_fvec (buffer_size); +int main () +{ + uint_t vec_size = 10, i; + fvec_t * vec = new_fvec (vec_size); - assert( in->length == buffer_size); + // vec->length matches requested size + assert(vec->length == vec_size); - assert( in->data[0] == 0); - assert( in->data[buffer_size / 2] == 0); - assert( in->data[buffer_size - 1] == 0); + // all elements are initialized to `0.` + for ( i = 0; i < vec->length; i++ ) { + assert(vec->data[i] == 0.); + } - in->data[buffer_size -1 ] = 1; - assert( in->data[buffer_size - 1] == 1); + // all elements can be set to `0.` + fvec_zeros(vec); + for ( i = 0; i < vec->length; i++ ) { + assert(vec->data[i] == 0.); + } + fvec_print(vec); - del_fvec(in); + // all elements can be set to `1.` + fvec_ones(vec); + for ( i = 0; i < vec->length; i++ ) { + assert(vec->data[i] == 1.); + } + fvec_print(vec); + + // each element can be accessed directly + for ( i = 0; i < vec->length; i++ ) { + vec->data[i] = i; + assert(vec->data[i] == i); + } + fvec_print(vec); + + // now destroys the vector + del_fvec(vec); return 0; } diff --git a/tests/src/test-lvec.c b/tests/src/test-lvec.c index 4fdc999a..3a9b2024 100644 --- a/tests/src/test-lvec.c +++ b/tests/src/test-lvec.c @@ -1,11 +1,10 @@ #include -int main(){ - /* allocate some memory */ - uint_t win_s = 1024; /* window size */ - lvec_t * sp = new_lvec (win_s); /* input buffer */ - del_lvec(sp); - - return 0; +int main() +{ + uint_t win_s = 1024; // window size + lvec_t * sp = new_lvec (win_s); // input buffer + del_lvec(sp); + return 0; } diff --git a/tests/src/test-mathutils-window.c b/tests/src/test-mathutils-window.c index a7d087cf..e3db5149 100644 --- a/tests/src/test-mathutils-window.c +++ b/tests/src/test-mathutils-window.c @@ -1,40 +1,31 @@ #include -#include +#include +#include -int main( ) +int main () { - uint_t length; - for (length = 2; length <= 5; length++) - { - fvec_t *t = new_aubio_window("rectangle", length); - del_fvec(t); - t = new_aubio_window("hamming", length); - fvec_print(t); - del_fvec(t); - t = new_aubio_window("hanning", length); - fvec_print(t); - del_fvec(t); - t = new_aubio_window("hanningz", length); - fvec_print(t); - del_fvec(t); - t = new_aubio_window("blackman", length); - fvec_print(t); - del_fvec(t); - t = new_aubio_window("blackman_harris", length); - fvec_print(t); - del_fvec(t); - t = new_aubio_window("gaussian", length); - fvec_print(t); - del_fvec(t); - t = new_aubio_window("welch", length); - fvec_print(t); - del_fvec(t); - t = new_aubio_window("parzen", length); - fvec_print(t); - del_fvec(t); - t = new_aubio_window("default", length); - fvec_print(t); - del_fvec(t); + uint_t length = 0; + uint_t n_length = 4, n_types = 10, i, t; + uint_t lengths[4] = { 8, 10, 15, 16 }; + char *method = "default"; + char *window_types[10] = { "default", + "rectangle", "hamming", "hanning", "hanningz", + "blackman", "blackman_harris", "gaussian", "welch", "parzen"}; + + for ( t = 0; t < n_types; t ++ ) { + for ( i = 0; i < n_length; i++) + { + length = lengths[i]; + method = window_types[t]; + + fvec_t * window = new_aubio_window(method, length); + + fvec_set_window(window, method); + fprintf(stdout, "length: %d, method: %s, window:, ", length, method); + fvec_print(window); + + del_fvec(window); + } } return 0; } diff --git a/tests/src/test-mathutils.c b/tests/src/test-mathutils.c index fe97c547..8c3e730a 100644 --- a/tests/src/test-mathutils.c +++ b/tests/src/test-mathutils.c @@ -3,21 +3,113 @@ #define AUBIO_UNSTABLE 1 #include -int main(){ +int test_next_power_of_two() +{ uint_t a, b; + a = 15; b = aubio_next_power_of_two(a); assert(b == 16); + fprintf(stdout, "aubio_next_power_of_two(%d) = %d\n", a, b); - a = 31; b = aubio_next_power_of_two(a); - fprintf(stdout, "next_power_of_two of %d is %d\n", a, b); - assert(b == 32); + a = 17; b = aubio_next_power_of_two(a); assert(b == 32); + fprintf(stdout, "aubio_next_power_of_two(%d) = %d\n", a, b); - a = 32; b = aubio_next_power_of_two(a); - fprintf(stdout, "next_power_of_two of %d is %d\n", a, b); - assert(b == 32); + a = 31; b = aubio_next_power_of_two(a); assert(b == 32); + fprintf(stdout, "aubio_next_power_of_two(%d) = %d\n", a, b); - a = 33; b = aubio_next_power_of_two(a); - fprintf(stdout, "next_power_of_two of %d is %d\n", a, b); - assert(b == 64); + a = 32; b = aubio_next_power_of_two(a); assert(b == 32); + fprintf(stdout, "aubio_next_power_of_two(%d) = %d\n", a, b); + a = 33; b = aubio_next_power_of_two(a); assert(b == 64); + fprintf(stdout, "aubio_next_power_of_two(%d) = %d\n", a, b); + + return 0; +} + +int test_miditofreq() +{ + smpl_t midi, freq; + for ( midi = 0; midi < 128; midi += 3 ) { + freq = aubio_miditofreq(midi); + fprintf(stdout, "aubio_miditofreq(%.2f) = %.2f\n", midi, freq); + } + midi = 69.5; + freq = aubio_miditofreq(midi); + fprintf(stdout, "aubio_miditofreq(%.2f) = %.2f\n", midi, freq); + midi = -69.5; + freq = aubio_miditofreq(midi); + fprintf(stdout, "aubio_miditofreq(%.2f) = %.2f\n", midi, freq); + midi = -169.5; + freq = aubio_miditofreq(midi); + fprintf(stdout, "aubio_miditofreq(%.2f) = %.2f\n", midi, freq); + midi = 140.; + freq = aubio_miditofreq(midi); + fprintf(stdout, "aubio_miditofreq(%.2f) = %.2f\n", midi, freq); + midi = 0; + freq = aubio_miditofreq(midi); + fprintf(stdout, "aubio_miditofreq(%.2f) = %.2f\n", midi, freq); + midi = 8.2e10; + freq = aubio_miditofreq(midi); + fprintf(stdout, "aubio_miditofreq(%.2f) = %.2f\n", midi, freq); + midi = -5.e10; + freq = aubio_miditofreq(midi); + fprintf(stdout, "aubio_miditofreq(%.2f) = %.2f\n", midi, freq); return 0; } +int test_freqtomidi() +{ + smpl_t midi, freq; + for ( freq = 0.; freq < 30000.; freq += 440. ) { + midi = aubio_freqtomidi(freq); + fprintf(stdout, "aubio_freqtomidi(%.2f) = %.2f\n", freq, midi); + } + freq = 69.5; + midi = aubio_freqtomidi(freq); + fprintf(stdout, "aubio_freqtomidi(%.2f) = %.2f\n", freq, midi); + freq = -69.5; + midi = aubio_freqtomidi(freq); + fprintf(stdout, "aubio_freqtomidi(%.2f) = %.2f\n", freq, midi); + freq = -169.5; + midi = aubio_freqtomidi(freq); + fprintf(stdout, "aubio_freqtomidi(%.2f) = %.2f\n", freq, midi); + freq = 140.; + midi = aubio_freqtomidi(freq); + fprintf(stdout, "aubio_freqtomidi(%.2f) = %.2f\n", freq, midi); + freq = 0; + midi = aubio_freqtomidi(freq); + fprintf(stdout, "aubio_freqtomidi(%.2f) = %.2f\n", freq, midi); + freq = 8.2e10; + midi = aubio_freqtomidi(freq); + fprintf(stdout, "aubio_freqtomidi(%.2f) = %.2f\n", freq, midi); + freq = -5.; + midi = aubio_freqtomidi(freq); + fprintf(stdout, "aubio_freqtomidi(%.2f) = %.2f\n", freq, midi); + return 0; +} + +int test_aubio_window() +{ + uint_t window_size = 16; + fvec_t * window = new_aubio_window("default", window_size); + del_fvec(window); + + window = new_fvec(window_size); + fvec_set_window(window, "rectangle"); + fvec_print(window); + + window_size /= 2.; + window = new_aubio_window("triangle", window_size); + fvec_print(window); + del_fvec(window); + + window = new_aubio_window("rectangle", 16); + del_fvec (window); + return 0; +} + +int main () +{ + test_next_power_of_two(); + test_miditofreq(); + test_freqtomidi(); + return 0; +} -- 2.26.2