[PATCH v2] gdi32/tests: MoveToEx() does not return the old point.

Huw Davies huw at codeweavers.com
Mon Nov 25 04:06:09 CST 2019


On Thu, Nov 21, 2019 at 05:22:29PM +0100, Francois Gouget wrote:
> This behavior goes back to at least Windows XP.
> 
> Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
> ---
> 
> v2: Added the todo_wine since it does not match the Windows behavior.
>     An alternative would be to mark the Windows behavior as broken. 
>     There's a good argument to be made about it since it does not match 
>     the documentation. But then the documentation is known to often be 
>     wrong and Windows' behavior has not wavered since Windows XP so it's 
>     not like this behavior is a bug that will be fixed. This is why I 
>     opted for documenting the Windows behavior and showing that Wine 
>     diverges.
> 
>  dlls/gdi32/tests/metafile.c | 15 +++++++--------
>  1 file changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/dlls/gdi32/tests/metafile.c b/dlls/gdi32/tests/metafile.c
> index 6adafa37b82..3d0e45e10a6 100644
> --- a/dlls/gdi32/tests/metafile.c
> +++ b/dlls/gdi32/tests/metafile.c
> @@ -2262,16 +2262,15 @@ static void test_mf_Graphics(void)
>      ok( ret, "MoveToEx error %d.\n", GetLastError());
>      ret = LineTo(hdcMetafile, 2, 2);
>      ok( ret, "LineTo error %d.\n", GetLastError());
> +    oldpoint.x = oldpoint.y = 11235;
>      ret = MoveToEx(hdcMetafile, 1, 1, &oldpoint);
>      ok( ret, "MoveToEx error %d.\n", GetLastError());
> -
> -/* oldpoint gets garbage under Win XP, so the following test would
> - * work under Wine but fails under Windows:
> - *
> - *   ok((oldpoint.x == 2) && (oldpoint.y == 2),
> - *       "MoveToEx: (x, y) = (%ld, %ld), should be (2, 2).\n",
> - *       oldpoint.x, oldpoint.y);
> - */
> +    /* Windows 9x and older may have returned oldpoint as per the
> +     * documentation. But Windows >= XP does not.
> +     */
> +    todo_wine ok(broken(oldpoint.x == 11235 && oldpoint.y == 11235),
> +       "MoveToEx: oldpoint = (%d, %d), should be (11235, 11235).\n",
> +       oldpoint.x, oldpoint.y);
>  
>      ret = Ellipse(hdcMetafile, 0, 0, 2, 2);
>      ok( ret, "Ellipse error %d.\n", GetLastError());

I don't think this makes much sense - the condition won't be tested under
Wine because of the broken().  It seems unlikely an app will ever depend
on this, so leaving the original comment there is probably the right
thing to do.

Huw.



More information about the wine-devel mailing list