[USER32_APITEST]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sun, 16 Jan 2011 21:03:20 +0000 (21:03 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sun, 16 Jan 2011 21:03:20 +0000 (21:03 +0000)
Add tests for GetIconInfo.

svn path=/trunk/; revision=50405

rostests/apitests/user32/CMakeLists.txt
rostests/apitests/user32/GetIconInfo.c [new file with mode: 0644]
rostests/apitests/user32/testlist.c
rostests/apitests/user32/user32_apitest.rbuild

index 6a36d9a..ffe5850 100644 (file)
@@ -7,6 +7,7 @@ list(APPEND SOURCE
     ScrollDC.c
     ScrollWindowEx.c
     GetSystemMetrics.c
+    GetIconInfo.c
     testlist.c)
 
 add_executable(user32_apitest ${SOURCE})
diff --git a/rostests/apitests/user32/GetIconInfo.c b/rostests/apitests/user32/GetIconInfo.c
new file mode 100644 (file)
index 0000000..deef6a3
--- /dev/null
@@ -0,0 +1,194 @@
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+
+// FIXME user32
+
+void
+Test_GetIconInfo(BOOL fIcon)
+{
+    HICON hicon;
+    ICONINFO iconinfo, iconinfo2;
+    BITMAP bitmap;
+
+    iconinfo.fIcon = fIcon;
+    iconinfo.xHotspot = 0;
+    iconinfo.yHotspot = 0;
+    iconinfo.hbmMask = NULL;
+    iconinfo.hbmColor = NULL;
+
+    hicon = CreateIconIndirect(&iconinfo);
+    ok(hicon == 0, "should fail\n");
+
+    iconinfo.hbmMask = CreateBitmap(8, 16, 1, 1, NULL);
+    hicon = CreateIconIndirect(&iconinfo);
+    ok(hicon != 0, "should not fail\n");
+
+    ok(GetIconInfo(hicon, &iconinfo2), "\n");
+    ok(iconinfo2.fIcon == iconinfo.fIcon, "\n");
+    if (fIcon)
+    {
+        ok(iconinfo2.xHotspot == 4, "%ld\n", iconinfo2.xHotspot);
+        ok(iconinfo2.yHotspot == 4, "%ld\n", iconinfo2.yHotspot);
+    }
+    else
+    {
+        ok(iconinfo2.xHotspot == 0, "%ld\n", iconinfo2.xHotspot);
+        ok(iconinfo2.yHotspot == 0, "%ld\n", iconinfo2.yHotspot);
+    }
+    ok(iconinfo2.hbmMask != NULL, "\n");
+    ok(iconinfo2.hbmMask != iconinfo.hbmMask, "\n");
+    ok(iconinfo2.hbmColor == NULL, "\n");
+
+    ok(GetIconInfo(hicon, &iconinfo2), "\n");
+    ok(iconinfo2.fIcon == iconinfo.fIcon, "\n");
+    if (fIcon)
+    {
+        ok(iconinfo2.xHotspot == 4, "%ld\n", iconinfo2.xHotspot);
+        ok(iconinfo2.yHotspot == 4, "%ld\n", iconinfo2.yHotspot);
+    }
+    else
+    {
+        ok(iconinfo2.xHotspot == 0, "%ld\n", iconinfo2.xHotspot);
+        ok(iconinfo2.yHotspot == 0, "%ld\n", iconinfo2.yHotspot);
+    }
+    ok(iconinfo2.hbmMask != NULL, "\n");
+    ok(iconinfo2.hbmMask != iconinfo.hbmMask, "\n");
+    ok(iconinfo2.hbmColor == NULL, "\n");
+
+    iconinfo.hbmColor = CreateBitmap(2, 2, 1, 1, NULL);
+    hicon = CreateIconIndirect(&iconinfo);
+    ok(hicon != 0, "should not fail\n");
+
+    ok(GetIconInfo(hicon, &iconinfo2), "\n");
+    ok(iconinfo2.fIcon == iconinfo.fIcon, "\n");
+    if (fIcon)
+    {
+        ok(iconinfo2.xHotspot == 4, "%ld\n", iconinfo2.xHotspot);
+        ok(iconinfo2.yHotspot == 8, "%ld\n", iconinfo2.yHotspot);
+    }
+    else
+    {
+        ok(iconinfo2.xHotspot == 0, "%ld\n", iconinfo2.xHotspot);
+        ok(iconinfo2.yHotspot == 0, "%ld\n", iconinfo2.yHotspot);
+    }
+    ok(iconinfo2.hbmMask != NULL, "\n");
+    ok(iconinfo2.hbmMask != iconinfo.hbmMask, "\n");
+    ok(iconinfo2.hbmColor != NULL, "\n");
+    ok(iconinfo2.hbmMask != iconinfo.hbmColor, "\n");
+
+    ok(GetObject(iconinfo2.hbmMask, sizeof(bitmap), &bitmap), "GetObject failed\n");
+    ok(bitmap.bmType == 0, "\n");
+    ok(bitmap.bmWidth == 8, "\n");
+    ok(bitmap.bmHeight == 16, "\n");
+    ok(bitmap.bmWidthBytes == 2, "\n");
+    ok(bitmap.bmPlanes == 1, "\n");
+    ok(bitmap.bmBitsPixel == 1, "\n");
+    ok(bitmap.bmBits == NULL, "\n");
+
+    ok(GetObject(iconinfo2.hbmColor, sizeof(bitmap), &bitmap), "GetObject failed\n");
+    ok(bitmap.bmType == 0, "\n");
+    ok(bitmap.bmWidth == 8, "\n");
+    ok(bitmap.bmHeight == 16, "\n");
+    ok(bitmap.bmWidthBytes == 8 * bitmap.bmBitsPixel / 8, "\n");
+    ok(bitmap.bmPlanes == 1, "\n");
+    ok(bitmap.bmBitsPixel == 32, "\n");
+    ok(bitmap.bmBits == NULL, "\n");
+
+    DeleteObject(iconinfo.hbmMask);
+    iconinfo.hbmMask = NULL;
+    hicon = CreateIconIndirect(&iconinfo);
+    ok(hicon == 0, "should fail\n");
+
+    DeleteObject(iconinfo.hbmColor);
+    iconinfo.hbmColor = CreateCompatibleBitmap(GetDC(0), 16, 16);
+    hicon = CreateIconIndirect(&iconinfo);
+    ok(hicon == 0, "should fail\n");
+
+    iconinfo.hbmMask = CreateCompatibleBitmap(GetDC(0), 8, 16);
+    hicon = CreateIconIndirect(&iconinfo);
+    ok(hicon != 0, "should not fail\n");
+
+    ok(GetIconInfo(hicon, &iconinfo2), "\n");
+
+    ok(GetObject(iconinfo2.hbmMask, sizeof(bitmap), &bitmap), "GetObject failed\n");
+    ok(bitmap.bmType == 0, "\n");
+    ok(bitmap.bmWidth == 8, "%ld\n", bitmap.bmWidth);
+    ok(bitmap.bmHeight == 16, "%ld\n", bitmap.bmHeight);
+    ok(bitmap.bmWidthBytes == 2, "%ld\n", bitmap.bmWidthBytes);
+    ok(bitmap.bmPlanes == 1, "%d\n", bitmap.bmPlanes);
+    ok(bitmap.bmBitsPixel == 1, "%d\n", bitmap.bmBitsPixel);
+    ok(bitmap.bmBits == NULL, "\n");
+
+    ok(GetObject(iconinfo2.hbmColor, sizeof(bitmap), &bitmap), "GetObject failed\n");
+    ok(bitmap.bmType == 0, "\n");
+    ok(bitmap.bmWidth == 8, "%ld\n", bitmap.bmWidth);
+    ok(bitmap.bmHeight == 16, "%ld\n", bitmap.bmHeight);
+    ok(bitmap.bmWidthBytes == 32, "%ld\n", bitmap.bmWidthBytes);
+    ok(bitmap.bmPlanes == 1, "%d\n", bitmap.bmPlanes);
+    ok(bitmap.bmBitsPixel == 32, "%d\n", bitmap.bmBitsPixel);
+    ok(bitmap.bmBits == NULL, "\n");
+
+}
+
+
+START_TEST(GetIconInfo)
+{
+    HCURSOR hcursor;
+    ICONINFO iconinfo2;
+    BITMAP bitmap;
+    DWORD data[] = {0, 0, 0, 0, 0, 0};
+
+    Test_GetIconInfo(0);
+    Test_GetIconInfo(1);
+
+    hcursor = LoadCursor(NULL, IDC_APPSTARTING);
+    ok(hcursor != 0, "should not fail\n");
+    ok(GetIconInfo(hcursor, &iconinfo2), "\n");
+    ok(iconinfo2.fIcon == 0, "\n");
+    ok(iconinfo2.xHotspot == 0, "%ld\n", iconinfo2.xHotspot);
+    ok(iconinfo2.yHotspot == 8, "%ld\n", iconinfo2.yHotspot);
+    ok(iconinfo2.hbmMask != NULL, "\n");
+    ok(iconinfo2.hbmColor != NULL, "\n");
+
+    ok(GetObject(iconinfo2.hbmMask, sizeof(bitmap), &bitmap), "GetObject failed\n");
+    ok(bitmap.bmType == 0, "\n");
+    ok(bitmap.bmWidth == 32, "%ld\n", bitmap.bmWidth);
+    ok(bitmap.bmHeight == 32, "\n");
+    ok(bitmap.bmWidthBytes == 4, "\n");
+    ok(bitmap.bmPlanes == 1, "\n");
+    ok(bitmap.bmBitsPixel == 1, "\n");
+    ok(bitmap.bmBits == NULL, "\n");
+
+    ok(GetObject(iconinfo2.hbmColor, sizeof(bitmap), &bitmap), "GetObject failed\n");
+    ok(bitmap.bmType == 0, "\n");
+    ok(bitmap.bmWidth == 32, "\n");
+    ok(bitmap.bmHeight == 32, "\n");
+    ok(bitmap.bmWidthBytes == 32 * bitmap.bmBitsPixel / 8, "\n");
+    ok(bitmap.bmPlanes == 1, "\n");
+    ok(bitmap.bmBitsPixel == 32, "\n");
+    ok(bitmap.bmBits == NULL, "\n");
+
+    hcursor = CreateCursor(NULL, 1, 2, 4, 4, data, data);
+    ok(hcursor != 0, "should not fail\n");
+    ok(GetIconInfo(hcursor, &iconinfo2), "\n");
+    ok(iconinfo2.fIcon == 0, "\n");
+    ok(iconinfo2.xHotspot == 1, "%ld\n", iconinfo2.xHotspot);
+    ok(iconinfo2.yHotspot == 2, "%ld\n", iconinfo2.yHotspot);
+    ok(iconinfo2.hbmMask != NULL, "\n");
+    ok(iconinfo2.hbmColor == NULL, "\n");
+
+    ok(GetObject(iconinfo2.hbmMask, sizeof(bitmap), &bitmap), "GetObject failed\n");
+    ok(bitmap.bmType == 0, "\n");
+    ok(bitmap.bmWidth == 4, "%ld\n", bitmap.bmWidth);
+    ok(bitmap.bmHeight == 8, "%ld\n", bitmap.bmHeight);
+    ok(bitmap.bmWidthBytes == 2, "%ld\n", bitmap.bmWidthBytes);
+    ok(bitmap.bmPlanes == 1, "\n");
+    ok(bitmap.bmBitsPixel == 1, "\n");
+    ok(bitmap.bmBits == NULL, "\n");
+
+}
+
+
index a81b5e4..34825a2 100644 (file)
@@ -10,6 +10,7 @@ extern void func_RealGetWindowClass(void);
 extern void func_ScrollDC(void);
 extern void func_ScrollWindowEx(void);
 extern void func_GetSystemMetrics(void);
+extern void func_GetIconInfo(void);
 
 const struct test winetest_testlist[] =
 {
@@ -18,6 +19,7 @@ const struct test winetest_testlist[] =
     { "ScrollDC", func_ScrollDC },
     { "ScrollWindowEx", func_ScrollWindowEx },
     { "GetSystemMetrics", func_GetSystemMetrics },
+    { "GetIconInfo", func_GetIconInfo },
 
     { 0, 0 }
 };
index 07a7d30..26f269c 100644 (file)
@@ -14,6 +14,7 @@
        <file>ScrollDC.c</file>
        <file>ScrollWindowEx.c</file>
        <file>GetSystemMetrics.c</file>
+       <file>GetIconInfo.c</file>
 
 </module>
 </group>