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

Huw Davies huw at codeweavers.com
Thu Nov 28 02:42:32 CST 2019


On Wed, Nov 27, 2019 at 07:55:28PM +0100, Francois Gouget wrote:
> On Mon, 25 Nov 2019, Huw Davies wrote:
> [...]
> > > @@ -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().
> 
> Actually broken() only returns true on Windows (my commit message was 
> misleading if not flat out wrong on that count). On Wine it always 
> returns false. This is why the todo_wine is needed.

Exactly, that was my point, broken() immediately returns 0 on Wine and the
condition is not evaluated.

> So I can understand not wanting to change the behavior of Wine and in 
> that case having a todo_wine we don't intend to fix is a problem. So 
> then I would propose this:
> 
> 
>     ok((oldpoint.x == 2 && oldpoint.y == 2) ||
>        broken(oldpoint.x == 11235 && oldpoint.y == 11235),
>        "MoveToEx: oldpoint = (%d, %d), should be (2, 2).\n",
>        oldpoint.x, oldpoint.y);
> 
> 
> I'll resubmit with this option fleshed out.

This would be ok.

Huw.



More information about the wine-devel mailing list