Module: wine Branch: master Commit: 9ccfac44d55687fd6e9a9fac8a7135d1dd70a8b7 URL: https://gitlab.winehq.org/wine/wine/-/commit/9ccfac44d55687fd6e9a9fac8a7135d...
Author: Fabian Maurer dark.shadow4@web.de Date: Sat Feb 24 18:23:22 2024 +0100
user32/tests: Add exhaustive tests for Get/SetThreadDpiAwarenessContext.
---
dlls/user32/tests/sysparams.c | 52 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+)
diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c index 16756ecb06a..68fe455a002 100644 --- a/dlls/user32/tests/sysparams.c +++ b/dlls/user32/tests/sysparams.c @@ -3778,6 +3778,55 @@ static void test_dpi_aware(void) test_metrics_for_dpi( 192 ); }
+static void test_ThreadDpiAwarenessContext(ULONG_PTR flags) +{ + int i; + DPI_AWARENESS_CONTEXT context, last_context; + DPI_AWARENESS awareness; + BOOL ret = pGetProcessDpiAwarenessInternal(GetCurrentProcess(), &awareness); + + struct awareness_context_thread + { + ULONG_PTR context; + ULONG_PTR result_get; + ULONG_PTR result_set; + BOOL todo_get; + BOOL todo_set; + } awareness_contexts[] = { + { 0x10 | flags, 0x10 | flags, 0x10 | flags }, + { 0x11 | flags, 0x11 | flags, 0x11 | flags }, + { 0x12, 0x12, 0x12 }, + { 0x22, 0x22, 0x22, TRUE, TRUE }, + { 0x80000010 | flags, 0x10 | awareness | flags, 0x80000010 | awareness | flags }, + { 0x80000011 | flags, 0x10 | awareness | flags, 0x80000010 | awareness | flags }, + { 0x80000012, 0x10 | awareness | flags, 0x80000010 | awareness | flags }, + { 0x80000022, 0x10 | awareness | flags, 0x80000010 | awareness | flags, FALSE, TRUE }, + { (ULONG_PTR)DPI_AWARENESS_CONTEXT_UNAWARE, 0x10 | flags, 0x10 | flags }, + { (ULONG_PTR)DPI_AWARENESS_CONTEXT_SYSTEM_AWARE, 0x11 | flags, 0x11 | flags }, + { (ULONG_PTR)DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE, 0x12, 0x12 }, + { (ULONG_PTR)DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2, 0x22, 0x22, TRUE, TRUE }, + { 0x12, 0x12 }, /* Only for last_result test */ + }; + + ok(ret, "GetProcessDpiAwarenessInternal failed\n"); + + for (i = 0; i < ARRAY_SIZE(awareness_contexts); i++) + { + struct awareness_context_thread *item = &awareness_contexts[i]; + last_context = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)item->context ); + ok(last_context != 0, "Failed to set context %p\n", (DPI_AWARENESS_CONTEXT)item->context ); + if (i != 0) + { + struct awareness_context_thread *last = &awareness_contexts[i - 1]; + todo_wine_if(awareness_contexts[i - 1].todo_set) + ok( last_context == (DPI_AWARENESS_CONTEXT)last->result_set, "For context %p - after set expected %p, got %p\n", (DPI_AWARENESS_CONTEXT)last->context, (DPI_AWARENESS_CONTEXT)last->result_set, last_context ); + } + context = pGetThreadDpiAwarenessContext(); + todo_wine_if(item->todo_get) + ok( context == (DPI_AWARENESS_CONTEXT)item->result_get, "For context %p - after get expected %p, got %p\n", (DPI_AWARENESS_CONTEXT)item->context, (DPI_AWARENESS_CONTEXT)item->result_get, context ); + } +} + static void test_dpi_context(void) { DPI_AWARENESS awareness; @@ -3923,6 +3972,9 @@ static void test_dpi_context(void) context = pGetThreadDpiAwarenessContext(); todo_wine ok( context == (DPI_AWARENESS_CONTEXT)(0x11 | flags), "wrong context %p\n", context ); + + test_ThreadDpiAwarenessContext(flags); + for (i = 0; i < 0x100; i++) { awareness = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)i );