From b2faa89507c0f6c4631918785f6e138a8d144245 Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin Date: Fri, 26 May 2023 02:34:53 -0400 Subject: Test parsing of random extensions --- tests/test_opus_extensions.c | 58 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/test_opus_extensions.c b/tests/test_opus_extensions.c index a7264552..e68f0247 100644 --- a/tests/test_opus_extensions.c +++ b/tests/test_opus_extensions.c @@ -32,6 +32,14 @@ #include #include #include +#include +#ifndef _WIN32 +#include +#else +#include +#define getpid _getpid +#endif + /* including sources directly to test internal APIs */ #define CELT_C /* to make celt_assert work */ #include "../src/extensions.c" @@ -304,8 +312,55 @@ void test_extensions_parse_fail(void) expect_true(result == OPUS_BUFFER_TOO_SMALL, "expected OPUS_BUFFER_TOO_SMALL"); } -int main(void) +#define NB_RANDOM_EXTENSIONS 1000000000 +#define MAX_EXTENSION_SIZE 200 +#define MAX_NB_EXTENSIONS 100 + +void test_random_extensions_parse(void) +{ + int i; + for (i=0;i= 0 && ext_out[j].frame < 48, "expected frame between 0 and 47"); + expect_true(ext_out[j].id >= 2 && ext_out[j].id <= 127, "expected id between 2 and 127"); + expect_true(ext_out[j].data >= payload && ext_out[j].data+ext_out[j].len <= payload+len, "expected data to be within packet"); + } + } +} + +int main(int argc, char **argv) { + int env_used; + char *env_seed; + env_used=0; + env_seed=getenv("SEED"); + if(argc>1)iseed=atoi(argv[1]); + else if(env_seed) + { + iseed=atoi(env_seed); + env_used=1; + } + else iseed=(opus_uint32)time(NULL)^(((opus_uint32)getpid()&65535)<<16); + Rw=Rz=iseed; + + fprintf(stderr,"Testing extensions. Random seed: %u (%.4X)\n", iseed, fast_rand() % 65535); + if(env_used)fprintf(stderr," Random seed set from the environment (SEED=%s).\n", env_seed); + test_extensions_generate_success(); test_extensions_generate_zero(); test_extensions_generate_no_padding(); @@ -313,6 +368,7 @@ int main(void) test_extensions_parse_success(); test_extensions_parse_zero(); test_extensions_parse_fail(); + test_random_extensions_parse(); fprintf(stderr,"Tests completed successfully.\n"); return 0; } -- cgit v1.2.3