[PATCH 08/10] d3dx9/tests: Use compare_float() in test_D3DXSHRotate().

Henri Verbeet hverbeet at codeweavers.com
Thu May 4 05:06:02 CDT 2017


Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
 dlls/d3dx9_36/tests/math.c | 96 +++++++++++++++++++++++++---------------------
 1 file changed, 52 insertions(+), 44 deletions(-)

diff --git a/dlls/d3dx9_36/tests/math.c b/dlls/d3dx9_36/tests/math.c
index 504c071..9f039f2 100644
--- a/dlls/d3dx9_36/tests/math.c
+++ b/dlls/d3dx9_36/tests/math.c
@@ -3371,48 +3371,54 @@ static void test_D3DXSHMultiply4(void)
 
 static void test_D3DXSHRotate(void)
 {
-    D3DXMATRIX m[4];
-    FLOAT expected, in[49], out[49], *out_temp, *received_ptr;
-    static const FLOAT table[]=
-    { /* Rotation around X-axis Pi/2 */
-        1.01f, -3.01f, 2.01f, 4.01f, -8.01f, -6.01f,
-        -11.307890f, 5.01f, -1.565839f, 1.093598f, -11.01f, 19.833414f,
-        -15.268191f, -19.004118f, -3.364889f, -9.562627f, 12.099654f, -0.272131f,
-        30.241013f, 26.919991f, 39.236877f, -22.632446f, 6.707388f, -11.768282f,
-        3.443672f, -6.07445f, 11.61839f, 1.527561f, 37.89633f, -56.9012f,
-        47.42289f, 50.39153f, 10.61819f, 25.50101f, 0.049241f, 16.98330f,
-
-        1.01f, -3.01f, -3.01f, 4.01f, -8.01f, -6.01f, -11.307889f, -8.01f, 14.297919f,
-      /* Rotation around X-axis -Pi/2 */
-        1.01f, 3.01f, -2.01f, 4.01f, 8.01f, -6.01f,
-        -11.307890f, -5.01f, -1.565839f, -1.093598f, -11.01f, -19.833414f,
-        15.268191f, -19.004118f, 3.364889f, -9.562627f, -12.099654f, -0.272131f,
-        -30.241013f, 26.919991f, 39.236877f, 22.632446f, 6.707388f, 11.768282f,
-        3.443672f, 6.07445f, 11.61839f, -1.527561f, 37.89633f, 56.9012f,
-        -47.42289f, 50.39153f, -10.61819f, 25.50101f, -0.049248f, 16.98330f,
-
-        1.01f, 3.01f, -3.01f, 4.01f, 8.01f, -6.01f, -11.307890f, -8.01f, 14.297919f,
-      /* Yaw Pi/3, Pitch Pi/4, Roll Pi/5 */
-        1.01f, 4.944899f, 1.442301f, 1.627281f, 0.219220f, 10.540824f,
-        -9.136903f, 2.763750f, -7.30904f,  -5.875721f, 5.303124f,  -8.682154f,
-        -25.683384f, 1.680279f, -18.808388f, 7.653656f, 16.939133f, -17.328018f,
-        14.629795f, -54.467102f, -12.231035f, -4.089857f, -9.444222f, 3.056035f,
-        0.179257f, -10.041875f, 23.090092f, -23.188709f, 11.727098f, -65.183090f,
-        48.671577f, -15.073209f, 38.793171f, -26.039536f, 6.192769f, -17.672247f,
-
-        1.01f, 4.944899f, -0.891142f, 4.607695f, 0.219218f, 10.773325f,
-        -8.204769f, 13.563829f, -12.007767f,
-      /* Rotation around Z-axis Pi/6 */
-        1.01f, 3.745711f, 3.01f, 2.467762f, 10.307889f, 9.209813f,
-        7.01f, 3.931864f, 0.166212f, 16.01f, 18.504042f, 17.405966f,
-        13.01f, 6.128016f, -2.029941f, -10.01f, 13.154292f, 24.01f,
-        29.432245f, 28.334167f, 21.01f, 9.056221f, -4.958143f, -18.01f,
-        -27.236094f, -4.520332f, 16.814543f, 34.01f, 43.092495f, 41.994423f,
-        31.01f, 12.716471f, -8.618400f, -28.01f, -40.896347f, -44.190571,
-
-        1.01f, 3.745711f, 3.01f, 1.599906f, 10.307889f, 9.209813f,
-        7.01f, 2.331957f, -4.421894f, };
+    float expected, in[49], out[49], *out_temp, *received_ptr;
     unsigned int i, j, l, order;
+    D3DXMATRIX m[4];
+    BOOL equal;
+
+    static const float table[]=
+    {
+        /* Rotation around the x-axis, π/2. */
+         1.00999999e+00f, -3.00999999e+00f,  2.00999975e+00f,  4.01000023e+00f, -8.01000023e+00f, -6.00999928e+00f,
+        -1.13078899e+01f,  5.00999975e+00f, -1.56583869e+00f,  1.09359801e+00f, -1.10099983e+01f,  1.98334141e+01f,
+        -1.52681913e+01f, -1.90041180e+01f, -3.36488891e+00f, -9.56262684e+00f,  1.20996542e+01f, -2.72131383e-01f,
+         3.02410126e+01f,  2.69199905e+01f,  3.92368774e+01f, -2.26324463e+01f,  6.70738792e+00f, -1.17682819e+01f,
+         3.44367194e+00f, -6.07445812e+00f,  1.16183939e+01f,  1.52756083e+00f,  3.78963356e+01f, -5.69012184e+01f,
+         4.74228935e+01f,  5.03915329e+01f,  1.06181908e+01f,  2.55010109e+01f,  4.92456071e-02f,  1.69833069e+01f,
+
+         1.00999999e+00f, -3.00999999e+00f, -3.01000023e+00f,  4.01000023e+00f, -8.01000023e+00f, -6.00999928e+00f,
+        -1.13078890e+01f, -8.01000023e+00f,  1.42979193e+01f,
+        /* Rotation around the x-axis, -π/2. */
+         1.00999999e+00f,  3.00999999e+00f, -2.01000023e+00f,  4.01000023e+00f,  8.01000023e+00f, -6.01000118e+00f,
+        -1.13078880e+01f, -5.01000071e+00f, -1.56583774e+00f, -1.09359753e+00f, -1.10100021e+01f, -1.98334103e+01f,
+         1.52681961e+01f, -1.90041142e+01f,  3.36489248e+00f, -9.56262398e+00f, -1.20996523e+01f, -2.72129118e-01f,
+        -3.02410049e+01f,  2.69200020e+01f,  3.92368736e+01f,  2.26324520e+01f,  6.70738268e+00f,  1.17682877e+01f,
+         3.44367099e+00f,  6.07445717e+00f,  1.16183996e+01f, -1.52756333e+00f,  3.78963509e+01f,  5.69011993e+01f,
+        -4.74229126e+01f,  5.03915253e+01f, -1.06182041e+01f,  2.55009995e+01f, -4.92481887e-02f,  1.69833050e+01f,
+
+         1.00999999e+00f,  3.00999999e+00f, -3.01000023e+00f,  4.01000023e+00f,  8.01000023e+00f, -6.01000118e+00f,
+        -1.13078899e+01f, -8.01000023e+00f,  1.42979193e+01f,
+        /* Yaw π/3, pitch π/4, roll π/5. */
+         1.00999999e+00f,  4.94489908e+00f,  1.44230127e+00f,  1.62728095e+00f,  2.19220325e-01f,  1.05408239e+01f,
+        -9.13690281e+00f,  2.76374960e+00f, -7.30904531e+00f, -5.87572050e+00f,  5.30312395e+00f, -8.68215370e+00f,
+        -2.56833839e+01f,  1.68027866e+00f, -1.88083878e+01f,  7.65365601e+00f,  1.69391327e+01f, -1.73280182e+01f,
+         1.46297951e+01f, -5.44671021e+01f, -1.22310352e+01f, -4.08985710e+00f, -9.44422245e+00f,  3.05603528e+00f,
+         1.79257303e-01f, -1.00418749e+01f,  2.30900917e+01f, -2.31887093e+01f,  1.17270985e+01f, -6.51830902e+01f,
+         4.86715775e+01f, -1.50732088e+01f,  3.87931709e+01f, -2.60395355e+01f,  6.19276857e+00f, -1.76722469e+01f,
+
+         1.00999999e+00f,  4.94489908e+00f, -8.91142070e-01f,  4.60769463e+00f,  2.19218358e-01f,  1.07733250e+01f,
+        -8.20476913e+00f,  1.35638294e+01f, -1.20077667e+01f,
+        /* Rotation around the z-axis, π/6. */
+         1.00999999e+00f,  3.74571109e+00f,  3.00999999e+00f,  2.46776199e+00f,  1.03078890e+01f,  9.20981312e+00f,
+         7.01000023e+00f,  3.93186355e+00f,  1.66212186e-01f,  1.60099983e+01f,  1.85040417e+01f,  1.74059658e+01f,
+         1.30100002e+01f,  6.12801647e+00f, -2.02994061e+00f, -1.00100012e+01f,  1.31542921e+01f,  2.40099964e+01f,
+         2.94322453e+01f,  2.83341675e+01f,  2.10100021e+01f,  9.05622101e+00f, -4.95814323e+00f, -1.80100002e+01f,
+        -2.72360935e+01f, -4.52033186e+00f,  1.68145428e+01f,  3.40099945e+01f,  4.30924950e+01f,  4.19944229e+01f,
+         3.10100002e+01f,  1.27164707e+01f, -8.61839962e+00f, -2.80100021e+01f, -4.08963470e+01f, -4.41905708e+01f,
+
+         1.00999999e+00f,  3.74571109e+00f,  3.00999999e+00f,  1.59990644e+00f,  1.03078890e+01f,  9.20981312e+00f,
+         7.01000023e+00f,  2.33195710e+00f, -4.42189360e+00f,
+    };
 
     D3DXMatrixRotationX(&m[0], -D3DX_PI / 2.0f);
     D3DXMatrixRotationX(&m[1], D3DX_PI / 2.0f);
@@ -3437,7 +3443,8 @@ static void test_D3DXSHRotate(void)
                 }
 
                 received_ptr = D3DXSHRotate(out_temp, order, &m[j], in);
-                ok(received_ptr == out_temp, "Order %u, expected %p, received %p\n", order, out, received_ptr);
+                ok(received_ptr == out_temp, "Order %u, expected %p, received %p.\n",
+                        order, out, received_ptr);
 
                 for (i = 0; i < 49; i++)
                 {
@@ -3452,8 +3459,9 @@ static void test_D3DXSHRotate(void)
                         expected = table[45 * j + i];
                     else
                         expected = table[45 * j + 36 +i];
-                    ok(relative_error(out_temp[i], expected) < admitted_error,
-                        "Order %u index %u, expected %f, received %f\n", order, i, expected, out_temp[i]);
+                    equal = compare_float(out_temp[i], expected, 4096);
+                    ok(equal, "Order %u index %u, expected %.8e, received %.8e.\n",
+                            order, i, expected, out_temp[i]);
                 }
             }
         }
-- 
2.1.4




More information about the wine-patches mailing list