From: Paul Brossier Date: Sun, 16 Dec 2018 18:19:58 +0000 (+0100) Subject: [tests] add more sink tests X-Git-Tag: 0.4.9~93 X-Git-Url: https://git.aubio.org/?a=commitdiff_plain;h=276032d7d249b4430c78fd56a7877ce410571fd7;p=aubio.git [tests] add more sink tests --- diff --git a/tests/src/io/base-sink_custom.h b/tests/src/io/base-sink_custom.h index 9f6d7208..fe55b742 100644 --- a/tests/src/io/base-sink_custom.h +++ b/tests/src/io/base-sink_custom.h @@ -63,9 +63,16 @@ failure: int test_wrong_params(void) { + fvec_t *vec; + fmat_t *mat; aubio_sink_custom_t *s; char_t sink_path[PATH_MAX] = "tmp_aubio_XXXXXX"; uint_t samplerate = 44100; + uint_t hop_size = 256; + uint_t oversized_hop_size = 4097; + uint_t oversized_samplerate = 192000 * 8 + 1; + uint_t channels = 3; + uint_t oversized_channels = 1025; // create temp file int fd = create_temp_sink(sink_path); @@ -77,16 +84,54 @@ int test_wrong_params(void) s = new_aubio_sink_custom(sink_path, 0); + // check setting wrong parameters fails + if (!aubio_sink_custom_preset_samplerate(s, oversized_samplerate)) return 1; + if (!aubio_sink_custom_preset_channels(s, oversized_channels)) return 1; + if (!aubio_sink_custom_preset_channels(s, -1)) return 1; + + // check setting valid parameters passes if (aubio_sink_custom_preset_samplerate(s, samplerate)) return 1; if (aubio_sink_custom_preset_channels(s, 1)) return 1; + // check writing a vector with valid length + vec = new_fvec(hop_size); + aubio_sink_custom_do(s, vec, hop_size); + // check writing more than in the input + aubio_sink_custom_do(s, vec, hop_size+1); + // check write 0 frames + aubio_sink_custom_do(s, vec, 0); + del_fvec(vec); + + // check writing an oversized vector + vec = new_fvec(oversized_hop_size); + aubio_sink_custom_do(s, vec, oversized_hop_size); + del_fvec(vec); + // test delete without closing del_aubio_sink_custom(s); s = new_aubio_sink_custom(sink_path, 0); + // preset channels first + if (aubio_sink_custom_preset_channels(s, channels)) return 1; if (aubio_sink_custom_preset_samplerate(s, samplerate)) return 1; - if (aubio_sink_custom_preset_channels(s, 3)) return 1; + + mat = new_fmat(channels, hop_size); + // check writing a vector with valid length + aubio_sink_custom_do_multi(s, mat, hop_size); + // check writing more than in the input + aubio_sink_custom_do_multi(s, mat, hop_size+1); + del_fmat(mat); + + // check writing oversized input + mat = new_fmat(channels, oversized_hop_size); + aubio_sink_custom_do_multi(s, mat, oversized_hop_size); + del_fmat(mat); + + // check writing undersized input + mat = new_fmat(channels - 1, hop_size); + aubio_sink_custom_do_multi(s, mat, hop_size); + del_fmat(mat); aubio_sink_custom_close(s); // test closing twice