2011-05-20 13:50:52 +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.
|
|
|
|
*/
|
|
|
|
|
2011-06-06 18:15:19 +03:00
|
|
|
/*! \file
|
|
|
|
* Dummy test suite for test runner. This can be used as a base for
|
|
|
|
* writing new tests. Dummy suite also works as reference to using
|
2011-07-11 17:55:35 +03:00
|
|
|
* various asserts and other (possible) utilities.
|
2011-06-06 18:15:19 +03:00
|
|
|
*/
|
|
|
|
|
2011-05-20 13:50:52 +03:00
|
|
|
#include <stdio.h>
|
2011-08-04 20:17:21 +03:00
|
|
|
#include <stdint.h>
|
2011-05-20 13:50:52 +03:00
|
|
|
|
2011-05-23 13:14:09 +03:00
|
|
|
#include <SDL/SDL.h>
|
2011-05-20 13:50:52 +03:00
|
|
|
|
2011-08-06 17:35:58 +03:00
|
|
|
#include "../../include/SDL_test.h"
|
2011-05-23 13:14:09 +03:00
|
|
|
|
2011-08-10 00:11:38 +03:00
|
|
|
#include <limits.h>
|
|
|
|
|
2011-06-06 21:16:18 +03:00
|
|
|
/* Test case references */
|
2011-05-30 11:53:59 +03:00
|
|
|
static const TestCaseReference test1 =
|
2011-08-14 21:36:43 +03:00
|
|
|
(TestCaseReference){ "test_dummy1", "description", TEST_ENABLED, 0, 4};
|
2011-05-26 20:13:49 -07:00
|
|
|
|
2011-05-30 11:53:59 +03:00
|
|
|
static const TestCaseReference test2 =
|
2011-08-14 21:36:43 +03:00
|
|
|
(TestCaseReference){ "test_dummy2", "description", TEST_ENABLED, 0, 0};
|
2011-05-30 11:53:59 +03:00
|
|
|
|
|
|
|
static const TestCaseReference test3 =
|
2011-08-14 21:36:43 +03:00
|
|
|
(TestCaseReference){ "test_fuzzy", "description", TEST_ENABLED, 0, 2};
|
2011-08-14 21:05:08 +03:00
|
|
|
|
|
|
|
static const TestCaseReference test4 =
|
2011-08-14 21:36:43 +03:00
|
|
|
(TestCaseReference){ "test_leak", "description", TEST_ENABLED, 0, 2};
|
2011-05-26 20:13:49 -07:00
|
|
|
|
|
|
|
/* Test suite */
|
|
|
|
extern const TestCaseReference *testSuite[] = {
|
2011-08-14 21:05:08 +03:00
|
|
|
&test1, &test2, &test3, &test4, NULL
|
2011-05-26 19:19:46 +03:00
|
|
|
};
|
|
|
|
|
2011-05-23 13:14:09 +03:00
|
|
|
|
2011-05-30 11:53:59 +03:00
|
|
|
TestCaseReference **QueryTestSuite() {
|
2011-05-26 20:13:49 -07:00
|
|
|
return (TestCaseReference **)testSuite;
|
2011-05-20 13:50:52 +03:00
|
|
|
}
|
|
|
|
|
2011-07-11 17:55:35 +03:00
|
|
|
/* Create test fixture */
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* SetUp function can be used to create a test fixture for test cases.
|
|
|
|
* The function will be called right before executing the test case.
|
|
|
|
*
|
2011-07-11 21:09:28 +03:00
|
|
|
* Note: If any assert in the function fails then the test will be skipped.
|
|
|
|
* In practice, the entire suite will be skipped if assert failure happens.
|
|
|
|
*
|
2011-07-11 17:55:35 +03:00
|
|
|
* Note: this function is optional.
|
|
|
|
*
|
|
|
|
* \param arg parameters given to test. Usually NULL
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
SetUp(void *arg)
|
|
|
|
{
|
|
|
|
// create test fixture,
|
|
|
|
// for example, set up static variables used by test cases here
|
|
|
|
}
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* TearDown function can be used to destroy a test fixture for test cases.
|
|
|
|
* The function will be called right after executing the test case.
|
|
|
|
*
|
|
|
|
* Note: this function is optional.
|
|
|
|
*
|
|
|
|
* \param arg parameters given to test. Usually NULL
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
TearDown(void *arg)
|
|
|
|
{
|
|
|
|
// destroy test fixture
|
|
|
|
}
|
|
|
|
|
2011-05-30 11:53:59 +03:00
|
|
|
/* Test case functions */
|
2011-06-09 18:07:50 +03:00
|
|
|
void
|
2011-08-14 21:36:43 +03:00
|
|
|
test_dummy1(void *arg)
|
2011-05-30 11:53:59 +03:00
|
|
|
{
|
2011-07-14 20:33:18 +03:00
|
|
|
AssertEquals(5, 5, "Assert message");
|
2011-07-24 18:21:53 +03:00
|
|
|
|
2011-08-03 20:43:32 +03:00
|
|
|
/*
|
|
|
|
for( ; 1 ; )
|
2011-08-17 11:44:57 +03:00
|
|
|
Log(0, "uint8 (same value): %u", RandomUint32());
|
2011-08-03 20:43:32 +03:00
|
|
|
// */
|
|
|
|
|
|
|
|
//Log(0, "uint8 (same value): %d", RandomUint8BoundaryValue(200, 200, SDL_TRUE));
|
|
|
|
|
2011-08-28 22:06:56 +03:00
|
|
|
int c = 0;
|
|
|
|
//for(; c < 100 ; c++)
|
|
|
|
printf("%f\n", RandomUnitFloat());
|
2011-08-17 12:57:14 +03:00
|
|
|
|
2011-08-11 22:07:14 +03:00
|
|
|
for(; 0 ; )
|
2011-08-11 12:48:45 +03:00
|
|
|
printf("%d\n", RandomSint16());
|
2011-08-10 00:11:38 +03:00
|
|
|
|
2011-08-10 16:55:30 +03:00
|
|
|
for( ; 0 ; ) {
|
2011-08-10 00:11:38 +03:00
|
|
|
//Log(0, "sint8: %d", RandomSint8BoundaryValue(-11, 10, SDL_TRUE));
|
|
|
|
//Log(0, "sint16: %d", RandomSint16BoundaryValue(SHRT_MIN, SHRT_MAX, SDL_FALSE));
|
|
|
|
Log(0, "sint32: %d", RandomSint32BoundaryValue(INT_MIN, 3000, SDL_FALSE));
|
|
|
|
//Log(0, "sint64: %lld", RandomSint64BoundaryValue(-34, -34, SDL_FALSE));
|
|
|
|
}
|
|
|
|
|
2011-08-04 20:54:27 +03:00
|
|
|
for(; 0 ;) {
|
2011-08-04 20:17:21 +03:00
|
|
|
//Log(0, "int8: %u", RandomUint8BoundaryValue(0, 255, SDL_FALSE));
|
|
|
|
//Log(0, "uint16: %u", RandomUint16BoundaryValue(0, UINT16_MAX, SDL_FALSE));
|
|
|
|
//Log(0, "int32: %u", RandomUint32BoundaryValue(0, 0xFFFFFFFE, SDL_FALSE));
|
|
|
|
Log(0, "int64: %llu", RandomUint64BoundaryValue(2, 0xFFFFFFFFFFFFFFFE, SDL_FALSE));
|
2011-07-25 18:51:57 +03:00
|
|
|
}
|
|
|
|
|
2011-07-24 18:21:53 +03:00
|
|
|
for(; 0 ;) {
|
2011-07-25 18:51:57 +03:00
|
|
|
int min = -5;
|
|
|
|
int max = 5;
|
2011-07-25 19:33:32 +03:00
|
|
|
int random = RandomIntegerInRange(min, max);
|
2011-07-24 18:21:53 +03:00
|
|
|
if(random < min || random > max ) {
|
|
|
|
AssertFail("Generated incorrect integer");
|
|
|
|
}
|
|
|
|
Log(0, "%d", random);
|
|
|
|
}
|
|
|
|
|
2011-07-27 17:48:07 +03:00
|
|
|
//Log(0, "Random: %s", RandomAsciiString());
|
2011-05-20 13:50:52 +03:00
|
|
|
}
|
|
|
|
|
2011-06-09 18:07:50 +03:00
|
|
|
void
|
2011-08-14 21:36:43 +03:00
|
|
|
test_dummy2(void *arg)
|
2011-05-30 11:53:59 +03:00
|
|
|
{
|
2011-05-20 13:50:52 +03:00
|
|
|
char *msg = "eello";
|
2011-07-20 23:37:58 +03:00
|
|
|
//msg[0] = 'H';
|
2011-07-10 18:42:52 +03:00
|
|
|
AssertTrue(1, "Assert message");
|
2011-08-28 21:00:38 +03:00
|
|
|
AssertTrue(0, "Assert message");
|
|
|
|
AssertTrue(1, "Assert message");
|
2011-05-20 13:50:52 +03:00
|
|
|
}
|
|
|
|
|
2011-06-09 18:07:50 +03:00
|
|
|
void
|
2011-08-14 21:36:43 +03:00
|
|
|
test_fuzzy(void *arg)
|
2011-05-30 11:53:59 +03:00
|
|
|
{
|
2011-08-14 21:05:08 +03:00
|
|
|
// Simulates a fuzzing failure
|
2011-08-13 19:00:39 +03:00
|
|
|
AssertTrue(RandomUint8() != 100, "Value is 100");
|
2011-05-20 13:50:52 +03:00
|
|
|
}
|
|
|
|
|
2011-08-14 21:05:08 +03:00
|
|
|
static void
|
|
|
|
f(void) {
|
|
|
|
int* x = malloc(10 * sizeof(int));
|
|
|
|
x[10] = 0; // problem 1: heap block overrun
|
|
|
|
} // problem 2: memory leak -- x not freed
|
|
|
|
|
|
|
|
|
|
|
|
void
|
2011-08-14 21:36:43 +03:00
|
|
|
test_leak(void *arg)
|
2011-08-14 21:05:08 +03:00
|
|
|
{
|
|
|
|
// Creates a memory leak
|
|
|
|
f();
|
|
|
|
|
|
|
|
AssertPass("");
|
|
|
|
}
|
|
|
|
|