Alexandre Julliard : user32/tests: Add tests for desktop size and DPI scaling.
Alexandre Julliard
julliard at winehq.org
Wed Aug 22 16:12:29 CDT 2018
Module: wine
Branch: master
Commit: 98146e1bce568b1755922d4840ae312ebc4480c1
URL: https://source.winehq.org/git/wine.git/?a=commit;h=98146e1bce568b1755922d4840ae312ebc4480c1
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Aug 22 11:43:08 2018 +0200
user32/tests: Add tests for desktop size and DPI scaling.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/tests/sysparams.c | 48 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 46 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c
index 7903c9a..36a9ef8 100644
--- a/dlls/user32/tests/sysparams.c
+++ b/dlls/user32/tests/sysparams.c
@@ -3193,11 +3193,14 @@ static void scale_rect_dpi( RECT *rect, UINT src_dpi, UINT target_dpi )
static void test_dpi_mapping(void)
{
HWND hwnd;
+ HDC hdc;
UINT win_dpi;
POINT point;
BOOL ret, todo;
- RECT rect, orig, client, expect;
+ RECT rect, orig, client, desktop, expect;
ULONG_PTR i, j;
+ HMONITOR monitor;
+ MONITORINFO mon_info;
DPI_AWARENESS_CONTEXT context;
if (!pLogicalToPhysicalPointForPerMonitorDPI)
@@ -3205,7 +3208,48 @@ static void test_dpi_mapping(void)
win_skip( "LogicalToPhysicalPointForPerMonitorDPI not supported\n" );
return;
}
- context = pGetThreadDpiAwarenessContext();
+ context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
+ GetWindowRect( GetDesktopWindow(), &desktop );
+ for (i = DPI_AWARENESS_UNAWARE; i <= DPI_AWARENESS_PER_MONITOR_AWARE; i++)
+ {
+ pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~i );
+ /* test desktop rect */
+ GetWindowRect( GetDesktopWindow(), &rect );
+ expect = desktop;
+ if (i == DPI_AWARENESS_UNAWARE) scale_rect_dpi( &expect, real_dpi, USER_DEFAULT_SCREEN_DPI );
+ ok( EqualRect( &expect, &rect ), "%lu: wrong desktop rect %s expected %s\n",
+ i, wine_dbgstr_rect(&rect), wine_dbgstr_rect(&expect) );
+ SetRect( &rect, 0, 0, GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ));
+ ok( EqualRect( &expect, &rect ), "%lu: wrong desktop rect %s expected %s\n",
+ i, wine_dbgstr_rect(&rect), wine_dbgstr_rect(&expect) );
+ SetRect( &rect, 0, 0, GetSystemMetrics( SM_CXVIRTUALSCREEN ), GetSystemMetrics( SM_CYVIRTUALSCREEN ));
+ ok( EqualRect( &expect, &rect ), "%lu: wrong virt desktop rect %s expected %s\n",
+ i, wine_dbgstr_rect(&rect), wine_dbgstr_rect(&expect) );
+ SetRect( &rect, 0, 0, 1, 1 );
+ monitor = MonitorFromRect( &rect, MONITOR_DEFAULTTOPRIMARY );
+ ok( monitor != 0, "failed to get monitor\n" );
+ mon_info.cbSize = sizeof(mon_info);
+ ok( GetMonitorInfoW( monitor, &mon_info ), "GetMonitorInfoExW failed\n" );
+ ok( EqualRect( &expect, &mon_info.rcMonitor ), "%lu: wrong monitor rect %s expected %s\n",
+ i, wine_dbgstr_rect(&mon_info.rcMonitor), wine_dbgstr_rect(&expect) );
+ hdc = CreateDCA( "display", NULL, NULL, NULL );
+ SetRect( &rect, 0, 0, GetDeviceCaps( hdc, HORZRES ), GetDeviceCaps( hdc, VERTRES ));
+ ok( EqualRect( &expect, &rect ), "%lu: wrong caps desktop rect %s expected %s\n",
+ i, wine_dbgstr_rect(&rect), wine_dbgstr_rect(&expect) );
+ SetRect( &rect, 0, 0, GetDeviceCaps( hdc, DESKTOPHORZRES ), GetDeviceCaps( hdc, DESKTOPVERTRES ));
+ ok( EqualRect( &desktop, &rect ), "%lu: wrong caps virt desktop rect %s expected %s\n",
+ i, wine_dbgstr_rect(&rect), wine_dbgstr_rect(&desktop) );
+ DeleteDC( hdc );
+ /* test message window rect */
+ hwnd = CreateWindowA( "SysParamsTestClass", "test", WS_CHILD,
+ 10, 10, 20, 20, HWND_MESSAGE, 0, GetModuleHandleA(0), NULL );
+ GetWindowRect( GetAncestor( hwnd, GA_PARENT ), &rect );
+ SetRect( &expect, 0, 0, 100, 100 );
+ if (i == DPI_AWARENESS_UNAWARE) scale_rect_dpi( &expect, real_dpi, USER_DEFAULT_SCREEN_DPI );
+ ok( EqualRect( &expect, &rect ), "%lu: wrong message rect %s expected %s\n",
+ i, wine_dbgstr_rect(&rect), wine_dbgstr_rect(&expect) );
+ DestroyWindow( hwnd );
+ }
for (i = DPI_AWARENESS_UNAWARE; i <= DPI_AWARENESS_PER_MONITOR_AWARE; i++)
{
pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~i );
More information about the wine-cvs
mailing list