From: Paul Brossier Date: Thu, 13 Dec 2018 15:10:18 +0000 (+0100) Subject: [tests] sync test-source with base-source_custom X-Git-Tag: 0.4.9~110 X-Git-Url: https://git.aubio.org/?p=aubio.git;a=commitdiff_plain;h=4435ea3c202678e2d81a9e94e386be00e858ef04 [tests] sync test-source with base-source_custom --- diff --git a/tests/src/io/test-source.c b/tests/src/io/test-source.c index 66471dc1..abc536cc 100644 --- a/tests/src/io/test-source.c +++ b/tests/src/io/test-source.c @@ -1,12 +1,14 @@ #include #include "utils_tests.h" -int main (int argc, char **argv) +int test_wrong_params(void); + +int main(int argc, char **argv) { uint_t err = 0; if (argc < 2) { PRINT_ERR("not enough arguments, running tests\n"); - err = run_on_default_source(main); + err = test_wrong_params(); PRINT_MSG("read a wave file as a mono vector\n"); PRINT_MSG("usage: %s [samplerate] [hop_size]\n", argv[0]); PRINT_MSG("examples:\n"); @@ -27,11 +29,10 @@ int main (int argc, char **argv) char_t *source_path = argv[1]; - aubio_source_t* s = new_aubio_source(source_path, samplerate, hop_size); - if (!s) { err = 1; goto beach; } fvec_t *vec = new_fvec(hop_size); + if (!s || !vec) { err = 1; goto beach; } uint_t n_frames_expected = aubio_source_get_duration(s); @@ -49,11 +50,60 @@ int main (int argc, char **argv) // close the file (optional) aubio_source_close(s); - // test closing the file a second time - aubio_source_close(s); - del_fvec (vec); - del_aubio_source (s); beach: + if (vec) + del_fvec(vec); + if (s) + del_aubio_source(s); return err; } + +int test_wrong_params(void) +{ + char_t *uri = DEFINEDSTRING(AUBIO_TESTS_SOURCE); + uint_t samplerate = 44100; + uint_t hop_size = 512; + uint_t channels, read = 0; + fvec_t *vec; + fmat_t *mat; + aubio_source_t *s; + + if (new_aubio_source(0, samplerate, hop_size)) return 1; + if (new_aubio_source('\0', samplerate, hop_size)) return 1; + if (new_aubio_source(uri, -1, hop_size)) return 1; + if (new_aubio_source(uri, 0, 0)) return 1; + + s = new_aubio_source(uri, samplerate, hop_size); + if (!s) return 1; + channels = aubio_source_get_channels(s); + + // vector to read downmixed samples + vec = new_fvec(hop_size); + // matrix to read individual channels + mat = new_fmat(channels, hop_size); + + if (aubio_source_get_samplerate(s) != samplerate) return 1; + + // read first hop_size frames + aubio_source_do(s, vec, &read); + if (read != hop_size) return 1; + + // seek to 0 + if(aubio_source_seek(s, 0)) return 1; + + // read again as multiple channels + aubio_source_do_multi(s, mat, &read); + if (read != hop_size) return 1; + + // close the file (optional) + aubio_source_close(s); + // test closing the file a second time + aubio_source_close(s); + + del_aubio_source(s); + del_fmat(mat); + del_fvec(vec); + + return run_on_default_source(main); +}