Author: tkreuzer
Date: Tue Apr 24 17:11:08 2012
New Revision: 56408
URL:
http://svn.reactos.org/svn/reactos?rev=56408&view=rev
Log:
[GDI32_APITEST]
- Add tests for CombineRgn
Added:
trunk/rostests/apitests/gdi32/CombineRgn.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] Tue Apr 24 17:11:08 2012
@@ -6,6 +6,7 @@
AddFontResource.c
AddFontResourceEx.c
BeginPath.c
+ CombineRgn.c
CombineTransform.c
CreateBitmap.c
CreateBitmapIndirect.c
Added: trunk/rostests/apitests/gdi32/CombineRgn.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/CombineRgn…
==============================================================================
--- trunk/rostests/apitests/gdi32/CombineRgn.c (added)
+++ trunk/rostests/apitests/gdi32/CombineRgn.c [iso-8859-1] Tue Apr 24 17:11:08 2012
@@ -1,0 +1,198 @@
+/*
+ * 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 ok_long(expression, result) \
+ { \
+ int _value = (expression); \
+ ok(_value == (result), "Wrong value for %s, expected " #result "
(0x%x), got 0x%x\n", \
+ #expression, (int)(result), _value); \
+ }
+
+
+void Test_CombineRgn_COPY()
+{
+ HRGN hrgn1, hrgn2, hrgn3;
+
+ hrgn1 = CreateRectRgn(0, 0, 0, 0);
+ hrgn2 = CreateRectRgn(0, 0, 10, 10);
+ hrgn3 = CreateRectRgn(5, 5, 20, 20);
+
+ SetLastError(0xbadbabe);
+ ok_long(CombineRgn(NULL, NULL, NULL, RGN_COPY), ERROR);
+ ok_long(CombineRgn(NULL, hrgn1, NULL, RGN_COPY), ERROR);
+ ok_long(CombineRgn(NULL, NULL, hrgn1, RGN_COPY), ERROR);
+ ok_long(CombineRgn(NULL, hrgn1, hrgn2, RGN_COPY), ERROR);
+ ok_long(GetLastError(), 0xbadbabe);
+
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_COPY), SIMPLEREGION);
+ ok(EqualRgn(hrgn1, hrgn2), "Region is not correct\n");
+
+ ok_long(CombineRgn(hrgn1, hrgn1, NULL, RGN_COPY), SIMPLEREGION);
+ ok(EqualRgn(hrgn1, hrgn2), "Region is not correct\n");
+
+ ok_long(CombineRgn(hrgn1, hrgn3, GetStockObject(BLACK_PEN), RGN_COPY),
SIMPLEREGION);
+ ok(EqualRgn(hrgn1, hrgn3), "Region is not correct\n");
+
+ ok_long(CombineRgn(hrgn1, GetStockObject(BLACK_PEN), hrgn2, RGN_COPY), ERROR);
+ ok(EqualRgn(hrgn1, hrgn3), "Region is not correct\n");
+
+ ok_long(CombineRgn(hrgn1, NULL, hrgn2, RGN_COPY), ERROR);
+ ok(EqualRgn(hrgn1, hrgn3), "Region is not correct\n");
+
+ ok_long(CombineRgn(hrgn1, NULL, NULL, RGN_COPY), ERROR);
+ ok(EqualRgn(hrgn1, hrgn3), "Region is not correct\n");
+
+ ok_long(GetLastError(), 0xbadbabe);
+
+}
+
+void Test_CombineRgn_AND()
+{
+ HRGN hrgn1, hrgn2, hrgn3;
+
+ hrgn1 = CreateRectRgn(0, 0, 0, 0);
+ hrgn2 = CreateRectRgn(0, 0, 10, 10);
+ hrgn3 = CreateRectRgn(5, 5, 20, 20);
+
+ SetLastError(0xbadbabe);
+ ok_long(CombineRgn(NULL, NULL, NULL, RGN_AND), ERROR);
+ ok_long(CombineRgn(hrgn1, NULL, NULL, RGN_AND), ERROR);
+ ok_long(CombineRgn(hrgn1, hrgn2, NULL, RGN_AND), ERROR);
+ ok_long(CombineRgn(hrgn1, NULL, hrgn2, RGN_AND), ERROR);
+ ok_long(CombineRgn(hrgn1, GetStockObject(BLACK_PEN), hrgn2, RGN_AND), ERROR);
+ ok_long(CombineRgn(hrgn1, hrgn2, GetStockObject(BLACK_PEN), RGN_AND), ERROR);
+ ok_long(GetLastError(), 0xbadbabe);
+
+
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_AND), SIMPLEREGION);
+ SetRectRgn(hrgn2, 5, 5, 10, 10);
+ ok(EqualRgn(hrgn1, hrgn2), "Region is not correct\n");
+
+ SetRectRgn(hrgn2, 0, 0, 5, 5);
+ SetRectRgn(hrgn3, 5, 0, 10, 5);
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_AND), NULLREGION);
+ SetRectRgn(hrgn2, 0, 0, 0, 0);
+ ok(EqualRgn(hrgn1, hrgn2), "Region is not correct\n");
+
+ SetRectRgn(hrgn2, 0, 0, 20, 20);
+ SetRectRgn(hrgn3, 5, 5, 10, 10);
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_AND), SIMPLEREGION);
+ SetRectRgn(hrgn2, 5, 5, 10, 10);
+ ok(EqualRgn(hrgn1, hrgn2), "Region is not correct\n");
+
+
+ SetRectRgn(hrgn2, 0, 0, 30, 10);
+ SetRectRgn(hrgn3, 10, 10, 20, 30);
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_OR), COMPLEXREGION);
+ SetRectRgn(hrgn2, 10, 0, 30, 30);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn2, RGN_AND), COMPLEXREGION);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn1, RGN_AND), COMPLEXREGION);
+ SetRectRgn(hrgn2, 10, 10, 30, 30);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn2, RGN_AND), SIMPLEREGION);
+ SetRectRgn(hrgn2, 0, 0, 10, 10);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn2, RGN_AND), NULLREGION);
+
+ SetRectRgn(hrgn1, 0, 0, 30, 10);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn1, RGN_AND), SIMPLEREGION);
+
+}
+
+void Test_CombineRgn_OR()
+{
+ HRGN hrgn1, hrgn2, hrgn3;
+
+ hrgn1 = CreateRectRgn(0, 0, 0, 0);
+ hrgn2 = CreateRectRgn(0, 0, 5, 5);
+ hrgn3 = CreateRectRgn(5, 0, 10, 5);
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_OR), SIMPLEREGION);
+ SetRectRgn(hrgn2, 0, 0, 10, 5);
+ ok(EqualRgn(hrgn1, hrgn2), "Region is not correct\n");
+
+ SetRectRgn(hrgn2, 0, 0, 10, 10);
+ SetRectRgn(hrgn3, 10, 10, 20, 20);
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_OR), COMPLEXREGION);
+ SetRectRgn(hrgn2, 10, 0, 20, 10);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn2, RGN_OR), COMPLEXREGION);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn1, RGN_OR), COMPLEXREGION);
+ SetRectRgn(hrgn2, 0, 10, 10, 20);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn2, RGN_OR), SIMPLEREGION);
+ SetRectRgn(hrgn2, 0, 0, 20, 20);
+ ok(EqualRgn(hrgn1, hrgn2), "Region is not correct\n");
+
+}
+
+void Test_CombineRgn_DIFF()
+{
+ HRGN hrgn1, hrgn2, hrgn3;
+
+ hrgn1 = CreateRectRgn(0, 0, 0, 0);
+ hrgn2 = CreateRectRgn(0, 0, 10, 10);
+ hrgn3 = CreateRectRgn(5, 0, 10, 5);
+
+ SetLastError(0xbadbabe);
+ ok_long(CombineRgn(NULL, NULL, NULL, RGN_DIFF), ERROR);
+ ok_long(CombineRgn(hrgn1, NULL, NULL, RGN_DIFF), ERROR);
+ ok_long(CombineRgn(hrgn1, hrgn2, NULL, RGN_DIFF), ERROR);
+ ok_long(CombineRgn(hrgn1, NULL, hrgn2, RGN_DIFF), ERROR);
+ ok_long(CombineRgn(hrgn1, GetStockObject(BLACK_PEN), hrgn2, RGN_DIFF), ERROR);
+ ok_long(CombineRgn(hrgn1, hrgn2, GetStockObject(BLACK_PEN), RGN_DIFF), ERROR);
+ ok_long(GetLastError(), 0xbadbabe);
+
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn1, RGN_DIFF), NULLREGION);
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn2, RGN_DIFF), NULLREGION);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn2, RGN_DIFF), NULLREGION);
+
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn1, RGN_DIFF), SIMPLEREGION);
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_DIFF), COMPLEXREGION);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn3, RGN_DIFF), COMPLEXREGION);
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn2, RGN_DIFF), NULLREGION);
+
+
+}
+
+void Test_CombineRgn_XOR()
+{
+ HRGN hrgn1, hrgn2, hrgn3, hrgn4;
+
+ hrgn1 = CreateRectRgn(0, 0, 0, 0);
+ hrgn2 = CreateRectRgn(0, 0, 5, 5);
+ hrgn3 = CreateRectRgn(5, 5, 10, 10);
+ hrgn4 = CreateRectRgn(0, 0, 0, 0);
+
+ SetLastError(0xbadbabe);
+ ok_long(CombineRgn(NULL, NULL, NULL, RGN_XOR), ERROR);
+ ok_long(CombineRgn(hrgn1, NULL, NULL, RGN_XOR), ERROR);
+ ok_long(CombineRgn(hrgn1, hrgn2, NULL, RGN_XOR), ERROR);
+ ok_long(CombineRgn(hrgn1, NULL, hrgn2, RGN_XOR), ERROR);
+ ok_long(CombineRgn(hrgn1, GetStockObject(BLACK_PEN), hrgn2, RGN_XOR), ERROR);
+ ok_long(CombineRgn(hrgn1, hrgn2, GetStockObject(BLACK_PEN), RGN_XOR), ERROR);
+ ok_long(GetLastError(), 0xbadbabe);
+
+ ok_long(CombineRgn(hrgn1, hrgn2, hrgn3, RGN_XOR), COMPLEXREGION);
+ ok_long(CombineRgn(hrgn4, hrgn2, hrgn3, RGN_OR), COMPLEXREGION);
+ ok(EqualRgn(hrgn1, hrgn4), "Region is not correct\n");
+
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn2, RGN_XOR), SIMPLEREGION);
+ ok(EqualRgn(hrgn1, hrgn3), "Region is not correct\n");
+ ok_long(CombineRgn(hrgn1, hrgn1, hrgn3, RGN_XOR), NULLREGION);
+
+
+}
+
+START_TEST(CombineRgn)
+{
+ Test_CombineRgn_COPY();
+ Test_CombineRgn_AND();
+ Test_CombineRgn_OR();
+ Test_CombineRgn_DIFF();
+ Test_CombineRgn_XOR();
+}
+
Propchange: trunk/rostests/apitests/gdi32/CombineRgn.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] Tue Apr 24 17:11:08 2012
@@ -8,6 +8,7 @@
extern void func_AddFontResource(void);
extern void func_AddFontResourceEx(void);
extern void func_BeginPath(void);
+extern void func_CombineRgn(void);
extern void func_CombineTransform(void);
extern void func_CreateBitmap(void);
extern void func_CreateBitmapIndirect(void);
@@ -61,6 +62,7 @@
{ "AddFontResource", func_AddFontResource },
{ "AddFontResourceEx", func_AddFontResourceEx },
{ "BeginPath", func_BeginPath },
+ { "CombineRgn", func_CombineRgn },
{ "CombineTransform", func_CombineTransform },
{ "CreateBitmap", func_CreateBitmap },
{ "CreateBitmapIndirect", func_CreateBitmapIndirect },