diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3952b27c..8e9d4c2a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -14,6 +14,7 @@ ADD_FLUID_TEST(test_sfont_loading) ADD_FLUID_TEST(test_sample_rate_change) ADD_FLUID_TEST(test_preset_sample_loading) ADD_FLUID_TEST(test_seqbind_unregister) +ADD_FLUID_TEST(test_snprintf) if ( LIBSNDFILE_HASVORBIS ) ADD_FLUID_TEST(test_sf3_sfont_loading) diff --git a/test/test_snprintf.c b/test/test_snprintf.c new file mode 100644 index 00000000..ae0da198 --- /dev/null +++ b/test/test_snprintf.c @@ -0,0 +1,23 @@ + +#include "test.h" +#include "utils/fluidsynth_priv.h" + +// this test makes sure FLUID_SNPRINTF uses a proper C99 compliant implementation + +int main(void) +{ + char buf[2+1]; + + int ret = FLUID_SNPRINTF(buf, sizeof(buf), "99"); + TEST_ASSERT(ret == 2); + + TEST_ASSERT(buf[2] == '\0'); + + ret = FLUID_SNPRINTF(buf, sizeof(buf), "999"); + TEST_ASSERT(ret == 3); + + // output truncated, buffer must be NULL terminated! + TEST_ASSERT(buf[2] == '\0'); + + return EXIT_SUCCESS; +}