1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) 4 * PURPOSE: Tests for SHAreIconsEqual 5 * COPYRIGHT: Copyright 2018 Mark Jansen (mark.jansen@reactos.org) 6 */ 7 8 #include <apitest.h> 9 #include <shlwapi.h> 10 #include "resource.h" 11 12 #include <pseh/pseh2.h> 13 14 static BOOL (WINAPI *pSHAreIconsEqual)(HICON hIcon1, HICON hIcon2); 15 16 static const char* names[] = 17 { 18 "16_8_black", 19 "16_8_red", 20 "16_32_black", 21 "16_32_red", 22 "32_8", 23 "32_32", 24 }; 25 26 void compare_icons_imp(int id1, int id2, BOOL expected) 27 { 28 HICON icon1 = LoadImageA(GetModuleHandle(NULL), MAKEINTRESOURCEA(id1), IMAGE_ICON, 0, 0, 0); 29 HICON icon2 = LoadImageA(GetModuleHandle(NULL), MAKEINTRESOURCEA(id2), IMAGE_ICON, 0, 0, 0); 30 31 BOOL result = pSHAreIconsEqual(icon1, icon2); 32 33 winetest_ok(icon1 != icon2, "Expected two different handles for %s==%s\n", names[id1-1], names[id2-1]); 34 winetest_ok(result == expected, "Expected %d, got %d for %s==%s\n", expected, result, names[id1-1], names[id2-1]); 35 36 DestroyIcon(icon1); 37 DestroyIcon(icon2); 38 } 39 40 #define compare_icons (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : compare_icons_imp 41 42 43 44 START_TEST(SHAreIconsEqual) 45 { 46 HMODULE module = LoadLibraryA("shlwapi.dll"); 47 BOOL Continue = FALSE; 48 pSHAreIconsEqual = (void*)GetProcAddress(module, MAKEINTRESOURCEA(548)); 49 if (!pSHAreIconsEqual) 50 { 51 skip("SHAreIconsEqual not exported\n"); 52 return; 53 } 54 55 _SEH2_TRY 56 { 57 pSHAreIconsEqual((HICON)IDC_APPSTARTING, (HICON)IDC_APPSTARTING); 58 Continue = TRUE; 59 } 60 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) 61 { 62 Continue = FALSE; 63 trace("SHAreIconsEqual not implemented?\n"); 64 } 65 _SEH2_END; 66 67 if (!Continue) 68 { 69 return; 70 } 71 72 ok(pSHAreIconsEqual((HICON)NULL, (HICON)NULL) == FALSE, "NULL\n"); 73 ok(pSHAreIconsEqual((HICON)IDC_APPSTARTING, (HICON)IDC_APPSTARTING) == FALSE, "IDC_APPSTARTING\n"); 74 ok(pSHAreIconsEqual((HICON)IDC_ARROW, (HICON)IDC_ARROW) == FALSE, "IDC_ARROW\n"); 75 ok(pSHAreIconsEqual((HICON)IDC_SIZENESW, (HICON)IDC_SIZENESW) == FALSE, "IDC_SIZENESW\n"); 76 77 compare_icons(ICON_16_8_BLACK, ICON_16_8_BLACK, TRUE); 78 compare_icons(ICON_16_8_BLACK, ICON_16_8_RED, FALSE); 79 compare_icons(ICON_16_8_BLACK, ICON_16_32_BLACK, FALSE); 80 compare_icons(ICON_16_8_BLACK, ICON_16_32_RED, FALSE); 81 compare_icons(ICON_16_8_BLACK, ICON_32_8, FALSE); 82 compare_icons(ICON_16_8_BLACK, ICON_32_32, FALSE); 83 } 84