2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for NtUserGetIconInfo
10 START_TEST(NtUserGetIconInfo
)
15 UNICODE_STRING hInstStr
;
16 UNICODE_STRING ResourceStr
;
19 ZeroMemory(&iinfo
, sizeof(ICONINFO
));
22 hIcon
= (HICON
) NtUserCallOneParam(0, _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
);
25 /* Last param is unknown */
26 TEST(NtUserGetIconInfo(hIcon
, &iinfo
, NULL
, NULL
, NULL
, FALSE
) == FALSE
);
27 TEST(NtUserGetIconInfo(hIcon
, &iinfo
, NULL
, NULL
, NULL
, TRUE
) == FALSE
);
29 TEST(NtUserDestroyCursor(hIcon
, 0) == TRUE
);
31 mask
= CreateBitmap(16,16,1,1,NULL
);
32 color
= CreateBitmap(16,16,1,16,NULL
);
35 iinfo
.hbmColor
= color
;
40 hIcon
= CreateIconIndirect(&iinfo
);
43 // TODO : test last parameter...
44 TEST(NtUserGetIconInfo(hIcon
, &iinfo
, NULL
, NULL
, NULL
, FALSE
) == TRUE
);
46 TEST(iinfo
.hbmMask
!= NULL
);
47 TEST(iinfo
.hbmColor
!= NULL
);
48 TEST(iinfo
.fIcon
== TRUE
);
49 TEST(iinfo
.yHotspot
== 8);
50 TEST(iinfo
.xHotspot
== 8);
52 TEST(iinfo
.hbmMask
!= mask
);
53 TEST(iinfo
.hbmColor
!= color
);
55 /* Does it make a difference? */
56 TEST(NtUserGetIconInfo(hIcon
, &iinfo
, NULL
, NULL
, NULL
, TRUE
) == TRUE
);
58 TEST(iinfo
.hbmMask
!= NULL
);
59 TEST(iinfo
.hbmColor
!= NULL
);
60 TEST(iinfo
.fIcon
== TRUE
);
61 TEST(iinfo
.yHotspot
== 8);
62 TEST(iinfo
.xHotspot
== 8);
64 TEST(iinfo
.hbmMask
!= mask
);
65 TEST(iinfo
.hbmColor
!= color
);
72 /* Test full param, with local icon */
73 hIcon
= LoadImageA(GetModuleHandle(NULL
),
74 MAKEINTRESOURCE(IDI_ICON
),
82 RtlInitUnicodeString(&hInstStr
, NULL
);
83 RtlInitUnicodeString(&ResourceStr
, NULL
);
85 TEST(NtUserGetIconInfo(hIcon
,
92 TESTX(hInstStr
.Buffer
== NULL
, "hInstStr.buffer : %p\n", hInstStr
.Buffer
);
93 TEST((LPCTSTR
)ResourceStr
.Buffer
== MAKEINTRESOURCE(IDI_ICON
));
96 /* Last param doesn't seem to matter*/
97 TEST(NtUserGetIconInfo(hIcon
,
104 TESTX(hInstStr
.Buffer
== NULL
, "hInstStr.buffer : %p\n", hInstStr
.Buffer
);
105 TEST((LPCTSTR
)ResourceStr
.Buffer
== MAKEINTRESOURCE(IDI_ICON
));
110 /* Test full param, with foreign icon */
111 hIcon
= LoadImageA(GetModuleHandleA("shell32.dll"),
112 MAKEINTRESOURCE(293),
120 hInstStr
.Buffer
= HeapAlloc(GetProcessHeap(), 0, MAX_PATH
* sizeof(WCHAR
));
121 hInstStr
.MaximumLength
= MAX_PATH
;
123 RtlInitUnicodeString(&ResourceStr
, NULL
);
125 TEST(NtUserGetIconInfo(hIcon
,
132 TEST(hInstStr
.Length
!= 0);
133 hInstStr
.Buffer
[hInstStr
.Length
] = 0;
134 printf("%s,%i: hInstStr.buffer : %S\n", __FUNCTION__
, __LINE__
, hInstStr
.Buffer
);
135 TEST((LPCTSTR
)ResourceStr
.Buffer
== MAKEINTRESOURCE(293));
136 TEST(ResourceStr
.Length
== 0);
137 TEST(ResourceStr
.MaximumLength
== 0);
140 ZeroMemory(hInstStr
.Buffer
, MAX_PATH
*sizeof(WCHAR
));
142 RtlInitUnicodeString(&ResourceStr
, NULL
);
144 TEST(NtUserGetIconInfo(hIcon
,
151 TEST(hInstStr
.Length
!= 0);
152 hInstStr
.Buffer
[hInstStr
.Length
] = 0;
153 printf("%s,%i: hInstStr.buffer : %S\n", __FUNCTION__
, __LINE__
, hInstStr
.Buffer
);
154 TEST((LPCTSTR
)ResourceStr
.Buffer
== MAKEINTRESOURCE(293));