Module: wine Branch: master Commit: c48dd628c5c159bcff54dd9747e6222a0410b9b0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c48dd628c5c159bcff54dd9747...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Thu May 4 12:06:02 2017 +0200
d3dx9/tests: Use compare_float() in test_D3DXSHRotate().
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Matteo Bruni mbruni@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 1e10b1f..0014ee2 100644 --- a/dlls/d3dx9_36/tests/math.c +++ b/dlls/d3dx9_36/tests/math.c @@ -3358,48 +3358,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); @@ -3424,7 +3430,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++) { @@ -3439,8 +3446,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]); } } }