SDL: testautomation_math: avoid equality tests with INFINITY (97778)

From 977781d3f4cef19b4ecf7b6bc402b7ab637b8655 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Tue, 21 Mar 2023 22:03:42 +0100
Subject: [PATCH] testautomation_math: avoid equality tests with INFINITY

Fixes this warning:
 warning: comparison with infinity always evaluates to false in fast floating point modes [-Wtautological-constant-compare]
---
 test/testautomation_math.c | 80 +++++++++++++++++++-------------------
 1 file changed, 41 insertions(+), 39 deletions(-)

diff --git a/test/testautomation_math.c b/test/testautomation_math.c
index 8b8dad4af664..87637c01db69 100644
--- a/test/testautomation_math.c
+++ b/test/testautomation_math.c
@@ -24,6 +24,8 @@
 #define EULER M_E
 #endif
 
+#define IS_INFINITY(V) fpclassify(V) == FP_INFINITE
+
 /* Square root of 3 (used in atan2) */
 #define SQRT3 1.7320508075688771931766041234368458390235900878906250
 
@@ -222,12 +224,12 @@ floor_infCases(void *args)
     double result;
 
     result = SDL_floor(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Floor(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
 
     result = SDL_floor(-INFINITY);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Floor(%f), expected %f, got %f",
                         -INFINITY, -INFINITY, result);
 
@@ -326,12 +328,12 @@ ceil_infCases(void *args)
     double result;
 
     result = SDL_ceil(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Ceil(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
 
     result = SDL_ceil(-INFINITY);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Ceil(%f), expected %f, got %f",
                         -INFINITY, -INFINITY, result);
 
@@ -430,12 +432,12 @@ trunc_infCases(void *args)
     double result;
 
     result = SDL_trunc(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Trunc(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
 
     result = SDL_trunc(-INFINITY);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Trunc(%f), expected %f, got %f",
                         -INFINITY, -INFINITY, result);
 
@@ -534,12 +536,12 @@ round_infCases(void *args)
     double result;
 
     result = SDL_round(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Round(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
 
     result = SDL_round(-INFINITY);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Round(%f), expected %f, got %f",
                         -INFINITY, -INFINITY, result);
 
@@ -638,12 +640,12 @@ fabs_infCases(void *args)
     double result;
 
     result = SDL_fabs(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Fabs(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
 
     result = SDL_fabs(-INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Fabs(%f), expected %f, got %f",
                         -INFINITY, INFINITY, result);
 
@@ -700,22 +702,22 @@ copysign_infCases(void *args)
     double result;
 
     result = SDL_copysign(INFINITY, -1.0);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Copysign(%f,%.1f), expected %f, got %f",
                         INFINITY, -1.0, -INFINITY, result);
 
     result = SDL_copysign(INFINITY, 1.0);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Copysign(%f,%.1f), expected %f, got %f",
                         INFINITY, 1.0, INFINITY, result);
 
     result = SDL_copysign(-INFINITY, -1.0);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Copysign(%f,%.1f), expected %f, got %f",
                         -INFINITY, -1.0, -INFINITY, result);
 
     result = SDL_copysign(-INFINITY, 1.0);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Copysign(%f,%.1f), expected %f, got %f",
                         -INFINITY, 1.0, INFINITY, result);
 
@@ -1008,7 +1010,7 @@ exp_infCases(void *args)
     double result;
 
     result = SDL_exp(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Exp(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
 
@@ -1104,17 +1106,17 @@ log_limitCases(void *args)
     double result;
 
     result = SDL_log(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Log(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
 
     result = SDL_log(0.0);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Log(%f), expected %f, got %f",
                         0.0, -INFINITY, result);
 
     result = SDL_log(-0.0);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Log(%f), expected %f, got %f",
                         -0.0, -INFINITY, result);
 
@@ -1194,17 +1196,17 @@ log10_limitCases(void *args)
     double result;
 
     result = SDL_log10(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Log10(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
 
     result = SDL_log10(0.0);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Log10(%f), expected %f, got %f",
                         0.0, -INFINITY, result);
 
     result = SDL_log10(-0.0);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Log10(%f), expected %f, got %f",
                         -0.0, -INFINITY, result);
 
@@ -1307,12 +1309,12 @@ pow_baseZeroExpNInfCases(void *args)
     double result;
 
     result = SDL_pow(0.0, -INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         0.0, -INFINITY, INFINITY, result);
 
     result = SDL_pow(-0.0, -INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         -0.0, -INFINITY, INFINITY, result);
 
@@ -1334,12 +1336,12 @@ pow_expInfCases(void *args)
                         0.5, INFINITY, 0.0, result);
 
     result = SDL_pow(1.5, INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         1.5, INFINITY, INFINITY, result);
 
     result = SDL_pow(0.5, -INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         0.5, INFINITY, INFINITY, result);
 
@@ -1368,7 +1370,7 @@ pow_basePInfCases(void *args)
                         INFINITY, -3.0, 0.0, result);
 
     result = SDL_pow(INFINITY, 2.0);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         INFINITY, 2.0, INFINITY, result);
 
@@ -1378,7 +1380,7 @@ pow_basePInfCases(void *args)
                         INFINITY, -2.12345, 0.0, result);
 
     result = SDL_pow(INFINITY, 3.1345);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         INFINITY, 3.12345, INFINITY, result);
 
@@ -1414,17 +1416,17 @@ pow_baseNInfCases(void *args)
                         -INFINITY, -5.5, 0.0, result);
 
     result = SDL_pow(-INFINITY, 3.0);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Pow(%f,%f), expected %f, got %f",
                         -INFINITY, 3.0, -INFINITY, result);
 
     result = SDL_pow(-INFINITY, 2.0);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         -INFINITY, 2.0, INFINITY, result);
 
     result = SDL_pow(-INFINITY, 5.5);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         -INFINITY, 5.5, INFINITY, result);
 
@@ -1526,7 +1528,7 @@ pow_baseNZeroExpOddCases(void *args)
     double result;
 
     result = SDL_pow(-0.0, -3.0);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Pow(%f,%f), expected %f, got %f",
                         -0.0, -3.0, -INFINITY, result);
 
@@ -1550,7 +1552,7 @@ pow_basePZeroExpOddCases(void *args)
     double result;
 
     result = SDL_pow(0.0, -5.0);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         0.0, -5.0, INFINITY, result);
 
@@ -1576,12 +1578,12 @@ pow_baseNZeroCases(void *args)
     double result;
 
     result = SDL_pow(-0.0, -3.5);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         -0.0, -3.5, INFINITY, result);
 
     result = SDL_pow(-0.0, -4.0);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         -0.0, -4.0, INFINITY, result);
 
@@ -1612,12 +1614,12 @@ pow_basePZeroCases(void *args)
     double result;
 
     result = SDL_pow(0.0, -3.5);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         0.0, -3.5, INFINITY, result);
 
     result = SDL_pow(0.0, -4.0);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Pow(%f,%f), expected %f, got %f",
                         0.0, -4.0, INFINITY, result);
 
@@ -1725,7 +1727,7 @@ static int
 sqrt_infCase(void *args)
 {
     const double result = SDL_sqrt(INFINITY);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Sqrt(%f), expected %f, got %f",
                         INFINITY, INFINITY, result);
     return TEST_COMPLETED;
@@ -1818,12 +1820,12 @@ scalbn_infCases(void *args)
     double result;
 
     result = SDL_scalbn(INFINITY, 1);
-    SDLTest_AssertCheck(INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result > 0,
                         "Scalbn(%f,%d), expected %f, got %f",
                         INFINITY, 1, INFINITY, result);
 
     result = SDL_scalbn(-INFINITY, 1);
-    SDLTest_AssertCheck(-INFINITY == result,
+    SDLTest_AssertCheck(IS_INFINITY(result) && result < 0,
                         "Scalbn(%f,%d), expected %f, got %f",
                         -INFINITY, 1, -INFINITY, result);