Author: tkreuzer
Date: Mon Apr 23 10:42:22 2012
New Revision: 56393
URL:
http://svn.reactos.org/svn/reactos?rev=56393&view=rev
Log:
[GDI32_APITEST]
Add tests for CreateBitmap, CreateIconIndirect, GetRandomRgn and PatBlt
Added:
trunk/rostests/apitests/gdi32/CreateBitmap.c (with props)
trunk/rostests/apitests/gdi32/CreateIconIndirect.c (with props)
trunk/rostests/apitests/gdi32/GetRandomRgn.c (with props)
trunk/rostests/apitests/gdi32/PatBlt.c (with props)
Modified:
trunk/rostests/apitests/gdi32/CMakeLists.txt
trunk/rostests/apitests/gdi32/testlist.c
Modified: trunk/rostests/apitests/gdi32/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/CMakeLists…
==============================================================================
--- trunk/rostests/apitests/gdi32/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rostests/apitests/gdi32/CMakeLists.txt [iso-8859-1] Mon Apr 23 10:42:22 2012
@@ -7,11 +7,13 @@
AddFontResourceEx.c
BeginPath.c
CombineTransform.c
+ CreateBitmap.c
CreateBitmapIndirect.c
CreateCompatibleDC.c
CreateDIBitmap.c
CreateFont.c
CreateFontIndirect.c
+ CreateIconIndirect.c
CreatePen.c
CreateRectRgn.c
DPtoLP.c
@@ -36,11 +38,13 @@
GetCurrentObject.c
GetDIBits.c
GetObject.c
+ GetRandomRgn.c
GetPixel.c
GetStockObject.c
GetTextExtentExPoint.c
GetTextFace.c
MaskBlt.c
+ PatBlt.c
Rectangle.c
SelectObject.c
SetDCPenColor.c
Added: trunk/rostests/apitests/gdi32/CreateBitmap.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/CreateBitm…
==============================================================================
--- trunk/rostests/apitests/gdi32/CreateBitmap.c (added)
+++ trunk/rostests/apitests/gdi32/CreateBitmap.c [iso-8859-1] Mon Apr 23 10:42:22 2012
@@ -1,0 +1,49 @@
+/*
+ * PROJECT: ReactOS api tests
+ * LICENSE: GPL - See COPYING in the top level directory
+ * PURPOSE: Test for CreateBitmap
+ * PROGRAMMERS: Timo Kreuzer
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+#define DEFAULT_BITMAP 21
+
+void Test_CreateBitmap()
+{
+ HBITMAP hbmp;
+ BITMAP bitmap;
+ int result;
+
+ hbmp = CreateBitmap(0, 0, 0, 0, NULL);
+ ok(hbmp != 0, "should get a 1x1 bitmap\n");
+ ok(hbmp == GetStockObject(DEFAULT_BITMAP), "\n");
+
+ result = GetObject(hbmp, sizeof(bitmap), &bitmap);
+ ok(result > 0, "result = %d\n", result);
+
+ ok(bitmap.bmType == 0, "bmType = %ld\n", bitmap.bmType);
+ ok(bitmap.bmWidth == 1, "bmWidth = %ld\n", bitmap.bmWidth);
+ ok(bitmap.bmHeight == 1, "bmHeight = %ld\n", bitmap.bmHeight);
+ ok(bitmap.bmWidthBytes == 2, "bmWidthBytes = %ld\n", bitmap.bmWidthBytes);
+ ok(bitmap.bmPlanes == 1, "bmPlanes = %d\n", bitmap.bmPlanes);
+ ok(bitmap.bmBitsPixel == 1, "bmBitsPixel = %d\n", bitmap.bmBitsPixel);
+ ok(bitmap.bmBits == 0, "bmBits = %p\n", bitmap.bmBits);
+
+ DeleteObject(hbmp);
+
+ hbmp = CreateBitmap(1, -1, 1, 0, NULL);
+ ok(hbmp == 0, "\n");
+
+ hbmp = CreateBitmap(-1, 1, 1, 0, NULL);
+ ok(hbmp == 0, "\n");
+
+}
+
+START_TEST(CreateBitmap)
+{
+ Test_CreateBitmap();
+}
+
Propchange: trunk/rostests/apitests/gdi32/CreateBitmap.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/rostests/apitests/gdi32/CreateIconIndirect.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/CreateIcon…
==============================================================================
--- trunk/rostests/apitests/gdi32/CreateIconIndirect.c (added)
+++ trunk/rostests/apitests/gdi32/CreateIconIndirect.c [iso-8859-1] Mon Apr 23 10:42:22
2012
@@ -1,0 +1,207 @@
+
+#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;
+ HICON hicon;
+ 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");
+
+
+ hicon = CreateIcon(0, 4, 4, 1, 1, (PBYTE)data, (PBYTE)data);
+ ok(hicon != 0, "should not fail\n");
+
+ ok(GetIconInfo(hicon, &iconinfo2), "\n");
+ ok(iconinfo2.fIcon == 0, "\n");
+ ok(iconinfo2.xHotspot == 2, "%ld\n", iconinfo2.xHotspot);
+ ok(iconinfo2.yHotspot == 2, "%ld\n", iconinfo2.yHotspot);
+ ok(iconinfo2.hbmMask != NULL, "\n");
+ ok(iconinfo2.hbmColor == NULL, "\n");
+
+}
+
+
Propchange: trunk/rostests/apitests/gdi32/CreateIconIndirect.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/rostests/apitests/gdi32/GetRandomRgn.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/GetRandomR…
==============================================================================
--- trunk/rostests/apitests/gdi32/GetRandomRgn.c (added)
+++ trunk/rostests/apitests/gdi32/GetRandomRgn.c [iso-8859-1] Mon Apr 23 10:42:22 2012
@@ -1,0 +1,370 @@
+/*
+ * PROJECT: ReactOS api tests
+ * LICENSE: GPL - See COPYING in the top level directory
+ * PURPOSE: Test for ...
+ * PROGRAMMERS: Timo Kreuzer
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+#define CLIPRGN 1
+#define METARGN 2
+#define APIRGN 3
+#define SYSRGN 4
+#define RGN5 5
+
+#define ok_int(x, exp) \
+ ok((x) == (exp), "Failed test in line %d: value %s expected 0x%x, got
0x%x\n", \
+ __LINE__, #x, exp, x)
+
+#define ok_long(x, exp) \
+ ok((x) == (exp), "Failed test in line %d: value %s expected 0x%lx, got
0x%lx\n", \
+ __LINE__, #x, exp, x)
+
+HWND ghwnd;
+HDC ghdcWindow;
+
+void Test_GetRandomRgn_Params()
+{
+ HDC hdc;
+ HRGN hrgn;
+ INT ret;
+
+ hdc = CreateCompatibleDC(0);
+ if (!hdc)
+ {
+ printf("Coun't create a dc\n");
+ return;
+ }
+
+ hrgn = CreateRectRgn(11, 17, 23, 42);
+ if (!hrgn)
+ {
+ printf("Coun't create a region\n");
+ return;
+ }
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(NULL, NULL, 0);
+ ok_int(ret, -1);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(NULL, NULL, CLIPRGN);
+ ok_int(ret, -1);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(NULL, hrgn, 0);
+ ok_int(ret, -1);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(NULL, hrgn, CLIPRGN);
+ ok_int(ret, -1);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(hdc, NULL, 0);
+ ok_int(ret, 0);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(hdc, NULL, CLIPRGN);
+ ok_int(ret, 0);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(hdc, hrgn, 0);
+ ok_int(ret, 0);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(hdc, hrgn, 5);
+ ok_int(ret, 1);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(hdc, hrgn, 6);
+ ok_int(ret, 0);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(hdc, hrgn, 27);
+ ok_int(ret, 0);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(hdc, hrgn, -1);
+ ok_int(ret, 0);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn(hdc, hrgn, CLIPRGN);
+ ok_int(ret, 0);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ SetLastError(0xbadbad00);
+ ret = GetRandomRgn((HDC)0x123, hrgn, CLIPRGN);
+ ok_int(ret, -1);
+ ok_long(GetLastError(), 0xbadbad00);
+
+ DeleteObject(hrgn);
+ DeleteDC(hdc);
+}
+
+void Test_GetRandomRgn_CLIPRGN()
+{
+ HDC hdc;
+ HRGN hrgn1, hrgn2;
+ INT ret;
+ RECT rect;
+
+ hrgn1 = CreateRectRgn(11, 17, 23, 42);
+ if (!hrgn1)
+ {
+ printf("Coun't create a region\n");
+ return;
+ }
+
+ hdc = CreateCompatibleDC(0);
+ if (!hdc)
+ {
+ printf("Coun't create a dc\n");
+ return;
+ }
+
+ ret = GetRandomRgn(hdc, hrgn1, CLIPRGN);
+ ok_int(ret, 0);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 11);
+ ok_long(rect.top, 17);
+ ok_long(rect.right, 23);
+ ok_long(rect.bottom, 42);
+
+ hrgn2 = CreateRectRgn(1, 2, 3, 4);
+ SelectClipRgn(hdc, hrgn2);
+ DeleteObject(hrgn2);
+ ret = GetRandomRgn(hdc, hrgn1, CLIPRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 1);
+ ok_long(rect.top, 2);
+ ok_long(rect.right, 3);
+ ok_long(rect.bottom, 4);
+
+ hrgn2 = CreateRectRgn(2, 3, 4, 5);
+ SelectClipRgn(ghdcWindow, hrgn2);
+ DeleteObject(hrgn2);
+ ret = GetRandomRgn(ghdcWindow, hrgn1, CLIPRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 2);
+ ok_long(rect.top, 3);
+ ok_long(rect.right, 4);
+ ok_long(rect.bottom, 5);
+
+ MoveWindow(ghwnd, 200, 400, 100, 100, 0);
+
+ ret = GetRandomRgn(ghdcWindow, hrgn1, CLIPRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 2);
+ ok_long(rect.top, 3);
+ ok_long(rect.right, 4);
+ ok_long(rect.bottom, 5);
+
+
+ DeleteObject(hrgn1);
+ DeleteDC(hdc);
+}
+
+void Test_GetRandomRgn_METARGN()
+{
+}
+
+void Test_GetRandomRgn_APIRGN()
+{
+}
+
+void Test_GetRandomRgn_SYSRGN()
+{
+ HDC hdc;
+ HRGN hrgn1, hrgn2;
+ INT ret;
+ RECT rect, rect2;
+ HBITMAP hbmp;
+
+ hrgn1 = CreateRectRgn(11, 17, 23, 42);
+ if (!hrgn1)
+ {
+ printf("Coun't create a region\n");
+ return;
+ }
+
+ hdc = CreateCompatibleDC(0);
+ if (!hdc)
+ {
+ printf("Coun't create a dc\n");
+ return;
+ }
+
+ ret = GetRandomRgn(hdc, hrgn1, SYSRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 0);
+ ok_long(rect.top, 0);
+ ok_long(rect.right, 1);
+ ok_long(rect.bottom, 1);
+
+ hrgn2 = CreateRectRgn(1, 2, 3, 4);
+ SelectClipRgn(hdc, hrgn2);
+ DeleteObject(hrgn2);
+ ret = GetRandomRgn(hdc, hrgn1, SYSRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 0);
+ ok_long(rect.top, 0);
+ ok_long(rect.right, 1);
+ ok_long(rect.bottom, 1);
+
+ hbmp = CreateCompatibleBitmap(hdc, 4, 7);
+ SelectObject(hdc, hbmp);
+ ret = GetRandomRgn(hdc, hrgn1, SYSRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 0);
+ ok_long(rect.top, 0);
+ ok_long(rect.right, 4);
+ ok_long(rect.bottom, 7);
+ DeleteObject(hbmp);
+
+ MoveWindow(ghwnd, 100, 100, 100, 100, 0);
+ ret = GetRandomRgn(ghdcWindow, hrgn1, SYSRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ DPtoLP(ghdcWindow, (LPPOINT)&rect, 2);
+ ok_long(rect.left, 104);
+ ok_long(rect.top, 124);
+ ok_long(rect.right, 209);
+ ok_long(rect.bottom, 196);
+
+ MoveWindow(ghwnd, 200, 400, 200, 200, 0);
+
+ ret = GetRandomRgn(ghdcWindow, hrgn1, SYSRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect2);
+ DPtoLP(ghdcWindow, (LPPOINT)&rect2, 2);
+ ok_long(rect2.left, rect.left + 100);
+ ok_long(rect2.top, rect.top + 300);
+ ok_long(rect2.right, rect.right + 200 - 13);
+ ok_long(rect2.bottom, rect.bottom + 400);
+
+
+ DeleteObject(hrgn1);
+ DeleteDC(hdc);
+
+}
+
+void Test_GetRandomRgn_RGN5()
+{
+ HDC hdc;
+ HRGN hrgn1, hrgn2;
+ INT ret;
+ RECT rect, rect2;
+ HBITMAP hbmp;
+
+ hrgn1 = CreateRectRgn(11, 17, 23, 42);
+ if (!hrgn1)
+ {
+ printf("Coun't create a region\n");
+ return;
+ }
+
+ hdc = CreateCompatibleDC(0);
+ if (!hdc)
+ {
+ printf("Coun't create a dc\n");
+ return;
+ }
+
+ ret = GetRandomRgn(hdc, hrgn1, RGN5);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 0);
+ ok_long(rect.top, 0);
+ ok_long(rect.right, 1);
+ ok_long(rect.bottom, 1);
+
+ hrgn2 = CreateRectRgn(1, 2, 3, 4);
+ SelectClipRgn(hdc, hrgn2);
+ DeleteObject(hrgn2);
+ ret = GetRandomRgn(hdc, hrgn1, RGN5);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 0);
+ ok_long(rect.top, 0);
+ ok_long(rect.right, 1);
+ ok_long(rect.bottom, 1);
+
+ hbmp = CreateCompatibleBitmap(hdc, 4, 7);
+ SelectObject(hdc, hbmp);
+ ret = GetRandomRgn(hdc, hrgn1, SYSRGN);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ ok_long(rect.left, 0);
+ ok_long(rect.top, 0);
+ ok_long(rect.right, 4);
+ ok_long(rect.bottom, 7);
+ DeleteObject(hbmp);
+
+ MoveWindow(ghwnd, 100, 100, 100, 100, 0);
+ ret = GetRandomRgn(ghdcWindow, hrgn1, RGN5);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect);
+ DPtoLP(ghdcWindow, (LPPOINT)&rect, 2);
+ ok_long(rect.left, 104);
+ ok_long(rect.top, 124);
+ ok_long(rect.right, 209);
+ ok_long(rect.bottom, 196);
+
+ MoveWindow(ghwnd, 200, 400, 200, 200, 0);
+
+ ret = GetRandomRgn(ghdcWindow, hrgn1, RGN5);
+ ok_int(ret, 1);
+ GetRgnBox(hrgn1, &rect2);
+ DPtoLP(ghdcWindow, (LPPOINT)&rect2, 2);
+ ok_long(rect2.left, rect.left + 100);
+ ok_long(rect2.top, rect.top + 300);
+ ok_long(rect2.right, rect.right + 200 - 13);
+ ok_long(rect2.bottom, rect.bottom + 400);
+
+
+ DeleteObject(hrgn1);
+ DeleteDC(hdc);
+}
+
+START_TEST(GetRandomRgn)
+{
+
+ /* Create a window */
+ ghwnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW
| WS_VISIBLE,
+ 100, 100, 100, 100, NULL, NULL, 0, 0);
+ ghdcWindow = GetDC(ghwnd);
+ if (!ghdcWindow)
+ {
+ printf("No window dc\n");
+ return;
+ }
+
+ Test_GetRandomRgn_Params();
+ Test_GetRandomRgn_CLIPRGN();
+ Test_GetRandomRgn_METARGN();
+ Test_GetRandomRgn_APIRGN();
+ Test_GetRandomRgn_SYSRGN();
+ Test_GetRandomRgn_RGN5();
+
+}
+
Propchange: trunk/rostests/apitests/gdi32/GetRandomRgn.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/rostests/apitests/gdi32/PatBlt.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/PatBlt.c?r…
==============================================================================
--- trunk/rostests/apitests/gdi32/PatBlt.c (added)
+++ trunk/rostests/apitests/gdi32/PatBlt.c [iso-8859-1] Mon Apr 23 10:42:22 2012
@@ -1,0 +1,109 @@
+/*
+ * PROJECT: ReactOS api tests
+ * LICENSE: GPL - See COPYING in the top level directory
+ * PURPOSE: Test for ...
+ * PROGRAMMERS: Timo Kreuzer
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+HBITMAP ghbmpTarget;
+PULONG gpulTargetBits;
+HDC hdcTarget;
+
+#define ok_long(x, exp) \
+ ok((x) == (exp), "Failed test in line %d: value %s expected 0x%lx, got
0x%lx\n", \
+ __LINE__, #x, exp, x)
+
+void Test_BrushOrigin()
+{
+ ULONG aulBits[2] = {0x5555AAAA, 0};
+ HBITMAP hbmp;
+ HBRUSH hbr;
+ BOOL ret;
+
+ hbmp = CreateBitmap(2, 2, 1, 1, aulBits);
+ if (!hbmp)
+ {
+ printf("Couln not create a bitmap\n");
+ return;
+ }
+
+ hbr = CreatePatternBrush(hbmp);
+ if (!hbr)
+ {
+ printf("Couln not create a bitmap\n");
+ return;
+ }
+
+ if (!SelectObject(hdcTarget, hbr))
+ {
+ printf("failed to select pattern brush\n");
+ return;
+ }
+
+ ret = PatBlt(hdcTarget, 0, 0, 2, 2, PATCOPY);
+ ok_long(ret, 1);
+ ok_long(gpulTargetBits[0], 0xffffff);
+ ok_long(gpulTargetBits[1], 0);
+ ok_long(gpulTargetBits[16], 0);
+ ok_long(gpulTargetBits[17], 0xffffff);
+ //printf("0x%lx, 0x%lx\n", gpulTargetBits[0], gpulTargetBits[1]);
+
+ ret = PatBlt(hdcTarget, 1, 0, 2, 2, PATCOPY);
+ ok_long(ret, 1);
+ ok_long(gpulTargetBits[0], 0xffffff);
+ ok_long(gpulTargetBits[1], 0);
+ ok_long(gpulTargetBits[2], 0xffffff);
+ ok_long(gpulTargetBits[16], 0);
+ ok_long(gpulTargetBits[17], 0xffffff);
+ ok_long(gpulTargetBits[18], 0);
+
+}
+
+START_TEST(PatBlt)
+{
+ BITMAPINFO bmi;
+
+ bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ bmi.bmiHeader.biWidth = 16;
+ bmi.bmiHeader.biHeight = -16;
+ bmi.bmiHeader.biPlanes = 1;
+ bmi.bmiHeader.biBitCount = 32;
+ bmi.bmiHeader.biCompression = BI_RGB;
+ bmi.bmiHeader.biSizeImage = 0;
+ bmi.bmiHeader.biXPelsPerMeter = 1;
+ bmi.bmiHeader.biYPelsPerMeter = 1;
+ bmi.bmiHeader.biClrUsed = 0;
+ bmi.bmiHeader.biClrImportant = 0;
+ ghbmpTarget = CreateDIBSection(NULL,
+ &bmi,
+ DIB_RGB_COLORS,
+ (PVOID*)&gpulTargetBits,
+ NULL,
+ 0);
+ if (!ghbmpTarget)
+ {
+ printf("Couln not create target bitmap\n");
+ return;
+ }
+
+ hdcTarget = CreateCompatibleDC(0);
+ if (!hdcTarget)
+ {
+ printf("Couln not create target dc\n");
+ return;
+ }
+
+
+ if (!SelectObject(hdcTarget, ghbmpTarget))
+ {
+ printf("Failed to select bitmap\n");
+ return;
+ }
+
+ Test_BrushOrigin();
+}
+
Propchange: trunk/rostests/apitests/gdi32/PatBlt.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/rostests/apitests/gdi32/testlist.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/testlist.c…
==============================================================================
--- trunk/rostests/apitests/gdi32/testlist.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/gdi32/testlist.c [iso-8859-1] Mon Apr 23 10:42:22 2012
@@ -9,11 +9,13 @@
extern void func_AddFontResourceEx(void);
extern void func_BeginPath(void);
extern void func_CombineTransform(void);
+extern void func_CreateBitmap(void);
extern void func_CreateBitmapIndirect(void);
extern void func_CreateCompatibleDC(void);
extern void func_CreateDIBitmap(void);
extern void func_CreateFont(void);
extern void func_CreateFontIndirect(void);
+extern void func_CreateIconIndirect(void);
extern void func_CreatePen(void);
extern void func_CreateRectRgn(void);
extern void func_DPtoLP(void);
@@ -39,10 +41,12 @@
extern void func_GetDIBits(void);
extern void func_GetPixel(void);
extern void func_GetObject(void);
+extern void func_GetRandomRgn(void);
extern void func_GetStockObject(void);
extern void func_GetTextExtentExPoint(void);
extern void func_GetTextFace(void);
extern void func_MaskBlt(void);
+extern void func_PatBlt(void);
extern void func_Rectangle(void);
extern void func_SelectObject(void);
extern void func_SetDCPenColor(void);
@@ -58,11 +62,13 @@
{ "AddFontResourceEx", func_AddFontResourceEx },
{ "BeginPath", func_BeginPath },
{ "CombineTransform", func_CombineTransform },
+ { "CreateBitmap", func_CreateBitmap },
{ "CreateBitmapIndirect", func_CreateBitmapIndirect },
{ "CreateCompatibleDC", func_CreateCompatibleDC },
{ "CreateDIBitmap", func_CreateDIBitmap },
{ "CreateFont", func_CreateFont },
{ "CreateFontIndirect", func_CreateFontIndirect },
+ { "CreateIconIndirect", func_CreateFontIndirect },
{ "CreatePen", func_CreatePen },
{ "CreateRectRgn", func_CreateRectRgn },
{ "DPtoLP", func_DPtoLP },
@@ -88,10 +94,12 @@
{ "GetDIBits", func_GetDIBits },
{ "GetPixel", func_GetPixel },
{ "GetObject", func_GetObject },
+ { "GetRandomRgn", func_GetRandomRgn },
{ "GetStockObject", func_GetStockObject },
{ "GetTextExtentExPoint", func_GetTextExtentExPoint },
{ "GetTextFace", func_GetTextFace },
{ "MaskBlt", func_MaskBlt },
+ { "PatBlt", func_PatBlt },
{ "Rectangle", func_Rectangle },
{ "SelectObject", func_SelectObject },
{ "SetDCPenColor", func_SetDCPenColor },