mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-28 14:08:28 +00:00
Don't allocate in SDLTest_GenerateRunSeed
This commit is contained in:

committed by
Anonymous Maarten

parent
2f4b2df595
commit
872608b8af
@@ -101,15 +101,15 @@ typedef struct SDLTest_TestSuiteReference {
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generates a random run seed string for the harness. The generated seed will contain alphanumeric characters (0-9A-Z).
|
* Generates a random run seed string for the harness. The generated seed
|
||||||
|
* will contain alphanumeric characters (0-9A-Z).
|
||||||
*
|
*
|
||||||
* Note: The returned string needs to be deallocated by the caller.
|
* \param buffer Buffer in which to generate the random seed. Must have a capacity of at least length + 1 characters.
|
||||||
|
* \param length Number of alphanumeric characters to write to buffer, must be >0
|
||||||
*
|
*
|
||||||
* \param length The length of the seed string to generate
|
* \returns A null-terminated seed string and equal to the in put buffer on success, NULL on failure
|
||||||
*
|
|
||||||
* \returns the generated seed string
|
|
||||||
*/
|
*/
|
||||||
char *SDLTest_GenerateRunSeed(const int length);
|
char *SDLTest_GenerateRunSeed(char *buffer, int length);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Execute a test suite using the given run seed and execution key.
|
* Execute a test suite using the given run seed and execution key.
|
||||||
|
@@ -50,35 +50,22 @@
|
|||||||
/* ! Timeout for single test case execution */
|
/* ! Timeout for single test case execution */
|
||||||
static Uint32 SDLTest_TestCaseTimeout = 3600;
|
static Uint32 SDLTest_TestCaseTimeout = 3600;
|
||||||
|
|
||||||
/**
|
char *SDLTest_GenerateRunSeed(char *buffer, int length)
|
||||||
* Generates a random run seed string for the harness. The generated seed
|
|
||||||
* will contain alphanumeric characters (0-9A-Z).
|
|
||||||
*
|
|
||||||
* Note: The returned string needs to be deallocated by the caller.
|
|
||||||
*
|
|
||||||
* \param length The length of the seed string to generate
|
|
||||||
*
|
|
||||||
* \returns The generated seed string
|
|
||||||
*/
|
|
||||||
char *SDLTest_GenerateRunSeed(const int length)
|
|
||||||
{
|
{
|
||||||
char *seed = NULL;
|
|
||||||
Uint64 randomContext = SDL_GetPerformanceCounter();
|
Uint64 randomContext = SDL_GetPerformanceCounter();
|
||||||
int counter;
|
int counter;
|
||||||
|
|
||||||
|
if (!buffer) {
|
||||||
|
SDLTest_LogError("Input buffer must not be NULL.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Sanity check input */
|
/* Sanity check input */
|
||||||
if (length <= 0) {
|
if (length <= 0) {
|
||||||
SDLTest_LogError("The length of the harness seed must be >0.");
|
SDLTest_LogError("The length of the harness seed must be >0.");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate output buffer */
|
|
||||||
seed = (char *)SDL_malloc((length + 1) * sizeof(char));
|
|
||||||
if (!seed) {
|
|
||||||
SDLTest_LogError("SDL_malloc for run seed output buffer failed.");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Generate a random string of alphanumeric characters */
|
/* Generate a random string of alphanumeric characters */
|
||||||
for (counter = 0; counter < length; counter++) {
|
for (counter = 0; counter < length; counter++) {
|
||||||
char ch;
|
char ch;
|
||||||
@@ -88,11 +75,11 @@ char *SDLTest_GenerateRunSeed(const int length)
|
|||||||
} else {
|
} else {
|
||||||
ch = (char)('A' + v - 10);
|
ch = (char)('A' + v - 10);
|
||||||
}
|
}
|
||||||
seed[counter] = ch;
|
buffer[counter] = ch;
|
||||||
}
|
}
|
||||||
seed[length] = '\0';
|
buffer[length] = '\0';
|
||||||
|
|
||||||
return seed;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -417,14 +404,11 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
|||||||
|
|
||||||
/* Generate run see if we don't have one already */
|
/* Generate run see if we don't have one already */
|
||||||
if (!userRunSeed || userRunSeed[0] == '\0') {
|
if (!userRunSeed || userRunSeed[0] == '\0') {
|
||||||
char *tmp = SDLTest_GenerateRunSeed(16);
|
runSeed = SDLTest_GenerateRunSeed(generatedSeed, 16);
|
||||||
if (!tmp) {
|
if (!runSeed) {
|
||||||
SDLTest_LogError("Generating a random seed failed");
|
SDLTest_LogError("Generating a random seed failed");
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
SDL_memcpy(generatedSeed, tmp, 16 + 1);
|
|
||||||
SDL_free(tmp);
|
|
||||||
runSeed = generatedSeed;
|
|
||||||
} else {
|
} else {
|
||||||
runSeed = userRunSeed;
|
runSeed = userRunSeed;
|
||||||
}
|
}
|
||||||
|
@@ -16,26 +16,30 @@
|
|||||||
*/
|
*/
|
||||||
static int sdltest_generateRunSeed(void *arg)
|
static int sdltest_generateRunSeed(void *arg)
|
||||||
{
|
{
|
||||||
|
char buffer[32];
|
||||||
char *result;
|
char *result;
|
||||||
size_t i, l;
|
size_t i, l;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
for (i = 1; i <= 10; i += 3) {
|
for (i = 1; i <= 10; i += 3) {
|
||||||
result = SDLTest_GenerateRunSeed((int)i);
|
result = SDLTest_GenerateRunSeed(buffer, (int)i);
|
||||||
SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed()");
|
SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed(<buf>, %" SDL_PRIu64 ")", (Uint64)i);
|
||||||
SDLTest_AssertCheck(result != NULL, "Verify returned value is not NULL");
|
SDLTest_AssertCheck(result != NULL, "Verify returned value is not NULL");
|
||||||
if (result != NULL) {
|
if (result != NULL) {
|
||||||
l = SDL_strlen(result);
|
l = SDL_strlen(result);
|
||||||
SDLTest_AssertCheck(l == i, "Verify length of returned value is %d, got: %d", (int)i, (int)l);
|
SDLTest_AssertCheck(l == i, "Verify length of returned value is %d, got: %d", (int)i, (int)l);
|
||||||
SDL_free(result);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result = SDLTest_GenerateRunSeed(NULL, 10);
|
||||||
|
SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed(NULL, 10)");
|
||||||
|
SDLTest_AssertCheck(result == NULL, "Verify returned value is NULL");
|
||||||
|
|
||||||
/* Negative cases */
|
/* Negative cases */
|
||||||
for (j = -2; j <= 0; j++) {
|
for (j = -2; j <= 0; j++) {
|
||||||
result = SDLTest_GenerateRunSeed(j);
|
result = SDLTest_GenerateRunSeed(buffer, j);
|
||||||
SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed()");
|
SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed(<buf>, %d)", j);
|
||||||
SDLTest_AssertCheck(result == NULL, "Verify returned value is not NULL");
|
SDLTest_AssertCheck(result == NULL, "Verify returned value is NULL");
|
||||||
}
|
}
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
Reference in New Issue
Block a user