Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libSDL
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
libSDL
Commits
8e99f21e
Commit
8e99f21e
authored
Jun 04, 2011
by
Markus Kauppila
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Runner can execute multiple test suites consecutively.
parent
88d6f702
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
91 additions
and
73 deletions
+91
-73
SDL_test.c
test/test-automation/SDL_test.c
+0
-17
SDL_test.h
test/test-automation/SDL_test.h
+12
-2
runner.c
test/test-automation/runner.c
+79
-54
No files found.
test/test-automation/SDL_test.c
View file @
8e99f21e
...
...
@@ -56,15 +56,6 @@ _TestCaseQuit()
return
_testReturnValue
;
}
/*!
* Assert function. Tests if the expected value equals the actual value, then
* the test assert succeeds, otherwise it fails and warns about it.
*
* \param expected Value user expects to have
* \param actual The actual value of tested variable
* \param message Message that will be printed if assert fails
*/
void
AssertEquals
(
Uint32
expected
,
Uint32
actual
,
char
*
message
,
...)
{
...
...
@@ -83,14 +74,6 @@ AssertEquals(Uint32 expected, Uint32 actual, char* message, ...)
}
}
/*!
* Assert function. Tests if the given condition is true. True in
* this case means non-zero value. If the condition is true, the
* assert passes, otherwise it fails.
*
* \param condition Condition which will be evaluated
* \param message Message that will be printed if assert fails
*/
void
AssertTrue
(
int
condition
,
char
*
message
,
...)
{
...
...
test/test-automation/SDL_test.h
View file @
8e99f21e
...
...
@@ -56,12 +56,22 @@ void _TestCaseInit();
int
_TestCaseQuit
();
/*!
* todo add comment
* Assert function. Tests if the expected value equals the actual value, then
* the test assert succeeds, otherwise it fails and warns about it.
*
* \param expected Value user expects to have
* \param actual The actual value of tested variable
* \param message Message that will be printed if assert fails
*/
void
AssertEquals
(
Uint32
expected
,
Uint32
actual
,
char
*
message
,
...);
/*!
* todo add comment
* Assert function. Tests if the given condition is true. True in
* this case means non-zero value. If the condition is true, the
* assert passes, otherwise it fails.
*
* \param condition Condition which will be evaluated
* \param message Message that will be printed if assert fails
*/
void
AssertTrue
(
int
condition
,
char
*
message
,
...);
...
...
test/test-automation/runner.c
View file @
8e99f21e
...
...
@@ -37,6 +37,15 @@ typedef int (*TestCaseQuit)(void);
//!< Flag for executing tests in-process
static
int
execute_inproc
=
0
;
//!< Temporary array to hold test suite names
#if defined(linux) || defined( __linux)
char
*
testSuites
[]
=
{
"tests/libtest.so"
,
"tests/libtestrect.so"
,
NULL
};
#else
char
*
testSuites
[]
=
{
"tests/libtest.dylib"
,
"tests/libtestrect.dylib"
,
NULL
};
#endif
/*!
* Returns the name for the dynamic library
* which implements the test suite.
...
...
@@ -45,16 +54,11 @@ static int execute_inproc = 0;
* returns the names of the dynamic libraries
* implementing the test suites)
*
* \return
Name of the dummy test suite
* \return
Array of test suite names
*/
char
*
char
*
*
ScanForTestSuites
()
{
#if defined(linux) || defined( __linux)
char
*
libName
=
"tests/libtest.so"
;
#else
char
*
libName
=
"tests/libtest.dylib"
;
#endif
return
libName
;
return
testSuites
;
}
...
...
@@ -189,6 +193,49 @@ HandleTestReturnValue(int stat_lock)
return
returnValue
;
}
/*!
* Executes a test case. Loads the test, executes it and
* returns the tests return value to the caller.
*
* \param suite The suite from which the test will be loaded
* \param testReference TestCaseReference of the test under execution
* \return The return value of the test. Zero means success, non-zero failure.
*/
int
ExecuteTest
(
void
*
suite
,
TestCaseReference
*
testReference
)
{
char
*
testname
=
testReference
->
name
;
TestCaseInit
testCaseInit
=
LoadTestCaseInit
(
suite
);
TestCaseQuit
testCaseQuit
=
LoadTestCaseQuit
(
suite
);
TestCase
test
=
(
TestCase
)
LoadTestCase
(
suite
,
testname
);
int
retVal
=
1
;
if
(
execute_inproc
)
{
testCaseInit
();
test
(
0x0
);
retVal
=
testCaseQuit
();
}
else
{
int
childpid
=
fork
();
if
(
childpid
==
0
)
{
testCaseInit
();
test
(
0x0
);
exit
(
testCaseQuit
());
}
else
{
int
stat_lock
=
-
1
;
int
child
=
wait
(
&
stat_lock
);
retVal
=
HandleTestReturnValue
(
stat_lock
);
}
}
return
retVal
;
}
/*!
* Prints usage information
*/
...
...
@@ -243,65 +290,43 @@ main(int argc, char *argv[])
const
Uint32
startTicks
=
SDL_GetTicks
();
char
*
testSuiteName
=
ScanForTestSuites
();
void
*
suite
=
LoadTestSuite
(
testSuiteName
);
TestCaseReference
**
tests
=
QueryTestCases
(
suite
);
TestCaseReference
*
reference
=
NULL
;
int
counter
=
0
;
char
**
testSuiteNames
=
ScanForTestSuites
();
for
(
reference
=
tests
[
counter
];
reference
;
reference
=
tests
[
++
counter
])
{
if
(
reference
->
enabled
==
TEST_DISABLED
)
{
printf
(
"Test %s (in %s) disabled. Omitting...
\n
"
,
reference
->
name
,
testSuiteName
);
}
else
{
char
*
testname
=
reference
->
name
;
printf
(
"Running %s (in %s):
\n
"
,
testname
,
testSuiteName
);
TestCaseInit
testCaseInit
=
LoadTestCaseInit
(
suite
);
TestCaseQuit
testCaseQuit
=
LoadTestCaseQuit
(
suite
);
TestCase
test
=
(
TestCase
)
LoadTestCase
(
suite
,
testname
);
char
*
testSuiteName
=
NULL
;
int
suiteCounter
=
0
;
for
(
testSuiteName
=
testSuiteNames
[
suiteCounter
];
testSuiteName
;
testSuiteName
=
testSuiteNames
[
++
suiteCounter
])
{
void
*
suite
=
LoadTestSuite
(
testSuiteName
);
TestCaseReference
**
tests
=
QueryTestCases
(
suite
);
int
retVal
=
1
;
if
(
execute_inproc
)
{
testCaseInit
();
TestCaseReference
*
reference
=
NULL
;
int
counter
=
0
;
test
(
0x0
);
retVal
=
testCaseQuit
(
);
for
(
reference
=
tests
[
counter
];
reference
;
reference
=
tests
[
++
counter
])
{
if
(
reference
->
enabled
==
TEST_DISABLED
)
{
printf
(
"Test %s (in %s) disabled. Omitting...
\n
"
,
reference
->
name
,
testSuiteName
);
}
else
{
int
childpid
=
fork
();
if
(
childpid
==
0
)
{
testCaseInit
();
printf
(
"Executing %s (in %s):
\n
"
,
reference
->
name
,
testSuiteName
);
test
(
0x0
);
int
retVal
=
ExecuteTest
(
suite
,
reference
);
return
testCaseQuit
();
if
(
retVal
)
{
failureCount
++
;
if
(
retVal
==
2
)
{
printf
(
"%s (in %s): FAILED -> No asserts
\n
"
,
reference
->
name
,
testSuiteName
);
}
else
{
printf
(
"%s (in %s): FAILED
\n
"
,
reference
->
name
,
testSuiteName
);
}
}
else
{
int
stat_lock
=
-
1
;
int
child
=
wait
(
&
stat_lock
);
retVal
=
HandleTestReturnValue
(
stat_lock
);
passCount
++
;
printf
(
"%s (in %s): ok
\n
"
,
reference
->
name
,
testSuiteName
);
}
}
if
(
retVal
)
{
failureCount
++
;
if
(
retVal
==
2
)
{
printf
(
"%s (in %s): FAILED -> No asserts
\n
"
,
testname
,
testSuiteName
);
}
else
{
printf
(
"%s (in %s): FAILED
\n
"
,
testname
,
testSuiteName
);
}
}
else
{
passCount
++
;
printf
(
"%s (in %s): ok
\n
"
,
testname
,
testSuiteName
);
}
printf
(
"
\n
"
);
}
printf
(
"
\n
"
);
SDL_UnloadObject
(
suite
);
}
SDL_UnloadObject
(
suite
);
const
Uint32
endTicks
=
SDL_GetTicks
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment