Test: Add Log10 tests to math suite.

This commit is contained in:
Pierre Wendling 2022-05-15 11:52:12 -04:00 committed by Sam Lantinga
parent 7041bbaf00
commit 6349ad7319

View file

@ -1048,6 +1048,91 @@ log_regularCases(void *args)
return helper_dtod("Log", SDL_log, regular_cases, SDL_arraysize(regular_cases));
}
/* SDL_log10 tests functions */
/**
* \brief Checks limits (zeros and positive infinity).
*/
static int
log10_limitCases(void *args)
{
double result;
result = SDL_log10(INFINITY);
SDLTest_AssertCheck(INFINITY == result,
"Log10(%f), expected %f, got %f",
INFINITY, INFINITY, result);
result = SDL_log10(0.0);
SDLTest_AssertCheck(-INFINITY == result,
"Log10(%f), expected %f, got %f",
0.0, -INFINITY, result);
result = SDL_log10(-0.0);
SDLTest_AssertCheck(-INFINITY == result,
"Log10(%f), expected %f, got %f",
-0.0, -INFINITY, result);
return TEST_COMPLETED;
}
/**
* \brief Checks some base cases.
*/
static int
log10_baseCases(void *args)
{
const d_to_d base_cases[] = {
{ 1.0, 0.0 },
{ 10.0, 1.0 },
{ 100.0, 2.0 },
{ 1000.0, 3.0 },
{ 10000.0, 4.0 },
{ 100000.0, 5.0 },
{ 1000000.0, 6.0 },
{ 10000000.0, 7.0 },
{ 100000000.0, 8.0 },
{ 1000000000.0, 9.0 },
};
return helper_dtod("Log10", SDL_log10, base_cases, SDL_arraysize(base_cases));
}
/**
* \brief Checks the nan cases.
*/
static int
log10_nanCases(void *args)
{
double result;
result = SDL_log10(NAN);
SDLTest_AssertCheck(isnan(result),
"Log10(%f), expected %f, got %f",
NAN, NAN, result);
result = SDL_log10(-1234.5678);
SDLTest_AssertCheck(isnan(result),
"Log10(%f), expected %f, got %f",
-1234.5678, NAN, result);
return TEST_COMPLETED;
}
/**
* \brief Checks a set of regular cases.
*/
static int
log10_regularCases(void *args)
{
const d_to_d regular_cases[] = {
{ 5.0, 0.698970004336018857493684208748163655400276184082031250 },
{ 12.5, 1.09691001300805646145875016372883692383766174316406250 },
{ 56.32, 1.750662646134055755453573510749265551567077636718750 },
{ 789.123, 2.8971447016351858927407647570362314581871032714843750 },
{ 2734.876324, 3.436937691540090433761633903486654162406921386718750 }
};
return helper_dtod("Log10", SDL_log10, regular_cases, SDL_arraysize(regular_cases));
}
/* ================= Test References ================== */
/* SDL_floor test cases */
@ -1269,6 +1354,25 @@ static const SDLTest_TestCaseReference logTestRegular = {
"Check a set of regular values", TEST_ENABLED
};
/* SDL_log10 test cases */
static const SDLTest_TestCaseReference log10TestLimit = {
(SDLTest_TestCaseFp) log10_limitCases, "log10_limitCases",
"Check for limits", TEST_ENABLED
};
static const SDLTest_TestCaseReference log10TestNan = {
(SDLTest_TestCaseFp) log10_nanCases, "log10_nanCases",
"Check for the nan cases", TEST_ENABLED
};
static const SDLTest_TestCaseReference log10TestBase = {
(SDLTest_TestCaseFp) log10_baseCases, "log10_baseCases",
"Check for base cases", TEST_ENABLED
};
static const SDLTest_TestCaseReference log10TestRegular = {
(SDLTest_TestCaseFp) log10_regularCases, "log10_regularCases",
"Check a set of regular values", TEST_ENABLED
};
static const SDLTest_TestCaseReference *mathTests[] = {
&floorTestInf, &floorTestZero, &floorTestNan,
&floorTestRound, &floorTestFraction, &floorTestRange,
@ -1295,6 +1399,9 @@ static const SDLTest_TestCaseReference *mathTests[] = {
&logTestLimit, &logTestNan,
&logTestBase, &logTestRegular,
&log10TestLimit, &log10TestNan,
&log10TestBase, &log10TestRegular,
NULL
};