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>
This commit is contained in:
Henri Verbeet 2017-05-04 12:06:02 +02:00 committed by Alexandre Julliard
parent 201090bef8
commit c48dd628c5
1 changed files with 52 additions and 44 deletions

View File

@ -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]);
}
}
}