2011-07-24 18:58:36 +03:00
|
|
|
/*
|
|
|
|
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
|
|
|
|
|
|
This software is provided 'as-is', without any express or implied
|
|
|
|
warranty. In no event will the authors be held liable for any damages
|
|
|
|
arising from the use of this software.
|
|
|
|
|
|
|
|
Permission is granted to anyone to use this software for any purpose,
|
|
|
|
including commercial applications, and to alter it and redistribute it
|
|
|
|
freely, subject to the following restrictions:
|
|
|
|
|
|
|
|
1. The origin of this software must not be misrepresented; you must not
|
|
|
|
claim that you wrote the original software. If you use this software
|
|
|
|
in a product, an acknowledgment in the product documentation would be
|
|
|
|
appreciated but is not required.
|
|
|
|
2. Altered source versions must be plainly marked as such, and must not be
|
|
|
|
misrepresented as being the original software.
|
|
|
|
3. This notice may not be removed or altered from any source distribution.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _FUZZER_H
|
|
|
|
#define _FUZZER_H
|
|
|
|
|
2011-08-02 12:46:40 +03:00
|
|
|
#include <SDL/SDL_stdinc.h>
|
|
|
|
|
2011-07-24 18:58:36 +03:00
|
|
|
#include "utl_crc32.h"
|
|
|
|
#include "utl_md5.h"
|
|
|
|
#include "utl_random.h"
|
|
|
|
|
2011-07-25 18:51:57 +03:00
|
|
|
|
2011-07-24 18:58:36 +03:00
|
|
|
/*!
|
|
|
|
* Inits the fuzzer for a test
|
|
|
|
*/
|
2011-08-02 12:46:40 +03:00
|
|
|
void InitFuzzer(Uint64 execKey);
|
2011-07-24 18:58:36 +03:00
|
|
|
|
2011-07-25 18:51:57 +03:00
|
|
|
|
2011-07-24 18:58:36 +03:00
|
|
|
/*!
|
|
|
|
* Deinits the fuzzer (for a test)
|
|
|
|
*/
|
|
|
|
void DeinitFuzzer();
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
2011-07-25 18:51:57 +03:00
|
|
|
* Returns a random integer
|
2011-07-24 18:58:36 +03:00
|
|
|
*
|
|
|
|
* \returns Generated integer
|
|
|
|
*/
|
|
|
|
int RandomInteger();
|
|
|
|
|
2011-07-25 18:51:57 +03:00
|
|
|
|
2011-07-24 18:58:36 +03:00
|
|
|
/*!
|
2011-07-25 18:51:57 +03:00
|
|
|
* Returns a random positive integer
|
2011-07-24 18:58:36 +03:00
|
|
|
*
|
|
|
|
* \returns Generated integer
|
|
|
|
*/
|
2011-07-25 18:51:57 +03:00
|
|
|
int RandomPositiveInteger();
|
|
|
|
|
|
|
|
|
2011-07-25 19:33:32 +03:00
|
|
|
/*!
|
|
|
|
* todo add markup
|
|
|
|
*/
|
|
|
|
int RandomUint8BoundaryValue();
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* todo add markup
|
|
|
|
*/
|
|
|
|
int RandomInt8BoundaryValue();
|
|
|
|
|
|
|
|
|
2011-07-25 18:51:57 +03:00
|
|
|
/*!
|
|
|
|
* Returns integer in range [min, max]. Min and max
|
|
|
|
* value can be negative values as long as min is smaller than max.
|
|
|
|
* Min and max also can't be the same value.
|
|
|
|
*
|
|
|
|
* \returns Generated integer or ? in error
|
|
|
|
*/
|
|
|
|
int RandomIntegerInRange(int min, int max);
|
|
|
|
|
2011-07-24 18:58:36 +03:00
|
|
|
|
|
|
|
/*!
|
2011-07-25 18:51:57 +03:00
|
|
|
* Generates random null-terminated string. The maximum length for
|
|
|
|
* the string is 255 characters and it can contain ASCII characters
|
|
|
|
* from 1 to 127.
|
|
|
|
*
|
|
|
|
* Note: Returned string needs to be deallocated.
|
2011-07-24 18:58:36 +03:00
|
|
|
*
|
|
|
|
* \returns newly allocated random string
|
|
|
|
*/
|
|
|
|
char *RandomAsciiString();
|
|
|
|
|
2011-07-25 18:51:57 +03:00
|
|
|
|
2011-07-24 18:58:36 +03:00
|
|
|
/*!
|
2011-07-25 18:51:57 +03:00
|
|
|
* Generates random null-terminated string. The maximum length for
|
|
|
|
* the string is defined by maxLenght parameter.
|
|
|
|
* String can contain ASCII characters from 1 to 127.
|
|
|
|
*
|
|
|
|
* Note: Returned string needs to be deallocated.
|
2011-07-24 18:58:36 +03:00
|
|
|
*
|
2011-07-25 18:51:57 +03:00
|
|
|
* \param maxLength Maximum length of the generated string
|
|
|
|
*
|
|
|
|
* \returns newly allocated random string
|
|
|
|
*/
|
|
|
|
char *RandomAsciiStringWithMaximumLength(int maxLength);
|
|
|
|
|
|
|
|
|
2011-07-24 18:58:36 +03:00
|
|
|
/*!
|
|
|
|
* Generates execution key (used for random seed) for a test
|
|
|
|
*
|
|
|
|
* \param runSeed Seed of the harness
|
|
|
|
* \param suiteName Test suite name
|
|
|
|
* \param testName Test name
|
|
|
|
* \param iteration Number of test iteration
|
|
|
|
*
|
2011-07-25 20:32:31 +03:00
|
|
|
* \return Generated execution key as blob of 16 bytes. It needs be deallocated.
|
|
|
|
* On error, returns NULL.
|
2011-07-24 18:58:36 +03:00
|
|
|
*/
|
2011-08-02 12:46:40 +03:00
|
|
|
Uint64 GenerateExecKey(char *runSeed, char *suiteName, char *testName, int interationNumber);
|
2011-07-24 18:58:36 +03:00
|
|
|
|
|
|
|
#endif
|