mirror of
https://github.com/reactos/reactos.git
synced 2025-05-25 12:14:32 +00:00
Add tests for SetWindowExtEx, one more test for CreateCompatibleDC
svn path=/trunk/; revision=39280
This commit is contained in:
parent
d2ba20e8fa
commit
849e2133ac
3 changed files with 283 additions and 0 deletions
|
@ -40,6 +40,7 @@
|
||||||
#include "tests/SetDCPenColor.c"
|
#include "tests/SetDCPenColor.c"
|
||||||
#include "tests/SetMapMode.c"
|
#include "tests/SetMapMode.c"
|
||||||
#include "tests/SetSysColors.c"
|
#include "tests/SetSysColors.c"
|
||||||
|
#include "tests/SetWindowExtEx.c"
|
||||||
#include "tests/SetWorldTransform.c"
|
#include "tests/SetWorldTransform.c"
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,6 +83,7 @@ TESTENTRY TestList[] =
|
||||||
{ L"SetDCPenColor", Test_SetDCPenColor },
|
{ L"SetDCPenColor", Test_SetDCPenColor },
|
||||||
{ L"SetMapMode", Test_SetMapMode },
|
{ L"SetMapMode", Test_SetMapMode },
|
||||||
{ L"SetSysColors", Test_SetSysColors },
|
{ L"SetSysColors", Test_SetSysColors },
|
||||||
|
{ L"SetWindowExtEx", Test_SetWindowExtEx },
|
||||||
{ L"SetWorldTransform", Test_SetWorldTransform },
|
{ L"SetWorldTransform", Test_SetWorldTransform },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,12 @@ Test_CreateCompatibleDC(PTESTINFO pti)
|
||||||
RTEST(hDC2 == NULL);
|
RTEST(hDC2 == NULL);
|
||||||
if (hDC2 != NULL) DeleteDC(hDC2);
|
if (hDC2 != NULL) DeleteDC(hDC2);
|
||||||
|
|
||||||
|
/* Check map mode */
|
||||||
|
hDC = CreateCompatibleDC(hDCScreen);
|
||||||
|
SetMapMode(hDC, MM_ISOTROPIC);
|
||||||
|
hDC2 = CreateCompatibleDC(hDC);
|
||||||
|
TEST(GetMapMode(hDC2) == MM_TEXT);
|
||||||
|
|
||||||
// cleanup
|
// cleanup
|
||||||
DeleteDC(hDC);
|
DeleteDC(hDC);
|
||||||
|
|
||||||
|
|
275
rostests/apitests/gdi32api/tests/SetWindowExtEx.c
Normal file
275
rostests/apitests/gdi32api/tests/SetWindowExtEx.c
Normal file
|
@ -0,0 +1,275 @@
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
Test_SetWindowExtEx(PTESTINFO pti)
|
||||||
|
{
|
||||||
|
HDC hDC;
|
||||||
|
BOOL ret;
|
||||||
|
SIZE WindowExt, ViewportExt;
|
||||||
|
PGDI_TABLE_ENTRY pEntry;
|
||||||
|
DC_ATTR* pDC_Attr;
|
||||||
|
|
||||||
|
hDC = CreateCompatibleDC(0);
|
||||||
|
ASSERT(hDC);
|
||||||
|
|
||||||
|
SetLastError(0);
|
||||||
|
ret = SetWindowExtEx(0, 0, 0, NULL);
|
||||||
|
TEST(GetLastError() == ERROR_INVALID_HANDLE);
|
||||||
|
TEST(ret == 0);
|
||||||
|
|
||||||
|
SetLastError(0);
|
||||||
|
ret = SetWindowExtEx((HDC)0x1234, 0, 0, NULL);
|
||||||
|
TEST(GetLastError() == ERROR_INVALID_HANDLE);
|
||||||
|
TEST(ret == 0);
|
||||||
|
|
||||||
|
SetLastError(0);
|
||||||
|
ret = SetWindowExtEx(hDC, 0, 0, NULL);
|
||||||
|
TEST(GetLastError() == 0);
|
||||||
|
TEST(ret == 1);
|
||||||
|
|
||||||
|
WindowExt.cx = 1234;
|
||||||
|
WindowExt.cy = 6789;
|
||||||
|
SetLastError(0);
|
||||||
|
ret = SetWindowExtEx(0, 0, 0, &WindowExt);
|
||||||
|
TEST(GetLastError() == ERROR_INVALID_HANDLE);
|
||||||
|
TEST(ret == 0);
|
||||||
|
TEST(WindowExt.cx == 1234);
|
||||||
|
TEST(WindowExt.cy == 6789);
|
||||||
|
|
||||||
|
DeleteDC(hDC);
|
||||||
|
|
||||||
|
/* Test with a deleted DC */
|
||||||
|
SetLastError(0);
|
||||||
|
ret = SetWindowExtEx(hDC, 0, 0, NULL);
|
||||||
|
TEST(GetLastError() == ERROR_INVALID_PARAMETER);
|
||||||
|
TEST(ret == 0);
|
||||||
|
|
||||||
|
hDC = CreateCompatibleDC(0);
|
||||||
|
ASSERT(hDC);
|
||||||
|
|
||||||
|
pEntry = GdiHandleTable + GDI_HANDLE_GET_INDEX(hDC);
|
||||||
|
ASSERT(pEntry);
|
||||||
|
pDC_Attr = pEntry->UserData;
|
||||||
|
ASSERT(pDC_Attr);
|
||||||
|
|
||||||
|
/* Test setting it without changing the map mode (MM_TEXT) */
|
||||||
|
ret = SetWindowExtEx(hDC, 10, 20, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 1);
|
||||||
|
TEST(WindowExt.cy == 1);
|
||||||
|
|
||||||
|
/* Values should not be changed */
|
||||||
|
WindowExt.cx = WindowExt.cy = 0;
|
||||||
|
ret = SetWindowExtEx(hDC, 40, 30, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 1);
|
||||||
|
TEST(WindowExt.cy == 1);
|
||||||
|
|
||||||
|
/* Check the viewport */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == 1);
|
||||||
|
TEST(ViewportExt.cy == 1);
|
||||||
|
|
||||||
|
/* Test setting in isotropic mode with 0 extents */
|
||||||
|
SetMapMode(hDC, MM_ISOTROPIC);
|
||||||
|
WindowExt.cx = WindowExt.cy = 0;
|
||||||
|
ret = SetWindowExtEx(hDC, 0, 0, &WindowExt);
|
||||||
|
TEST(ret == 0);
|
||||||
|
TEST(WindowExt.cx == 3600);
|
||||||
|
TEST(WindowExt.cy == 2700);
|
||||||
|
ret = SetWindowExtEx(hDC, 100, 0, &WindowExt);
|
||||||
|
TEST(ret == 0);
|
||||||
|
ret = SetWindowExtEx(hDC, 0, 100, &WindowExt);
|
||||||
|
TEST(ret == 0);
|
||||||
|
|
||||||
|
/* Test setting in isotropic mode */
|
||||||
|
ret = SetWindowExtEx(hDC, 21224, 35114, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 3600);
|
||||||
|
TEST(WindowExt.cy == 2700);
|
||||||
|
|
||||||
|
/* Values should be changed */
|
||||||
|
ret = SetWindowExtEx(hDC,
|
||||||
|
4 * GetDeviceCaps(GetDC(0), HORZRES),
|
||||||
|
-4 * GetDeviceCaps(GetDC(0), VERTRES),
|
||||||
|
&WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 21224);
|
||||||
|
TEST(WindowExt.cy == 35114);
|
||||||
|
|
||||||
|
/* Check the viewport, should be the same */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == GetDeviceCaps(GetDC(0), HORZRES));
|
||||||
|
TEST(ViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* again isotropic mode with 1:1 res */
|
||||||
|
ret = SetWindowExtEx(hDC, 123, 123, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 4 * GetDeviceCaps(GetDC(0), HORZRES));
|
||||||
|
TEST(WindowExt.cy == -4 * GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* Test flXform */
|
||||||
|
TEST(pDC_Attr->flXform & PAGE_EXTENTS_CHANGED);
|
||||||
|
|
||||||
|
/* Check the viewport from the dcattr, without going through gdi */
|
||||||
|
TEST(pDC_Attr->szlViewportExt.cx == GetDeviceCaps(GetDC(0), HORZRES));
|
||||||
|
TEST(pDC_Attr->szlViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* Check the viewport with gdi, should not be the same */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
TEST(ViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* Test flXform */
|
||||||
|
TEST(pDC_Attr->flXform & PAGE_EXTENTS_CHANGED);
|
||||||
|
|
||||||
|
/* again isotropic mode with 3:1 res */
|
||||||
|
ret = SetWindowExtEx(hDC, 300, 100, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 123);
|
||||||
|
TEST(WindowExt.cy == 123);
|
||||||
|
|
||||||
|
/* Check the viewport now, should not be the same */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
TEST(ViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES) / 3);
|
||||||
|
|
||||||
|
/* again isotropic mode with 1:3 res */
|
||||||
|
SetViewportExtEx(hDC, 6000, 3000, 0);
|
||||||
|
ret = SetWindowExtEx(hDC, 200, 600, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 300);
|
||||||
|
TEST(WindowExt.cy == 100);
|
||||||
|
|
||||||
|
/* Check the viewport now, should not be the same */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == 1000);
|
||||||
|
TEST(ViewportExt.cy == 3000);
|
||||||
|
|
||||||
|
/* Test setting in anisotropic mode */
|
||||||
|
SetMapMode(hDC, MM_ANISOTROPIC);
|
||||||
|
ret = SetWindowExtEx(hDC, 80, 60, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 200);
|
||||||
|
TEST(WindowExt.cy == 600);
|
||||||
|
|
||||||
|
/* Values should be changed */
|
||||||
|
ret = SetWindowExtEx(hDC, 500, 500, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 80);
|
||||||
|
TEST(WindowExt.cy == 60);
|
||||||
|
|
||||||
|
/* Check the viewport */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == 1000);
|
||||||
|
TEST(ViewportExt.cy == 3000);
|
||||||
|
|
||||||
|
/* Test setting in low metric mode */
|
||||||
|
SetMapMode(hDC, MM_LOMETRIC);
|
||||||
|
ret = SetWindowExtEx(hDC, 120, 90, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 3600);
|
||||||
|
TEST(WindowExt.cy == 2700);
|
||||||
|
|
||||||
|
/* Values should not be changed */
|
||||||
|
WindowExt.cx = WindowExt.cy = 0;
|
||||||
|
ret = SetWindowExtEx(hDC, 900, 700, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 3600);
|
||||||
|
TEST(WindowExt.cy == 2700);
|
||||||
|
|
||||||
|
/* Check the viewport */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == GetDeviceCaps(GetDC(0), HORZRES));
|
||||||
|
TEST(ViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* Test setting in high metric mode */
|
||||||
|
SetMapMode(hDC, MM_HIMETRIC);
|
||||||
|
ret = SetWindowExtEx(hDC, 120, 90, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 36000);
|
||||||
|
TEST(WindowExt.cy == 27000);
|
||||||
|
|
||||||
|
/* Values should not be changed */
|
||||||
|
WindowExt.cx = WindowExt.cy = 0;
|
||||||
|
ret = SetWindowExtEx(hDC, 500, 300, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 36000);
|
||||||
|
TEST(WindowExt.cy == 27000);
|
||||||
|
|
||||||
|
/* Check the viewport */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == GetDeviceCaps(GetDC(0), HORZRES));
|
||||||
|
TEST(ViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* Test setting in low english mode */
|
||||||
|
SetMapMode(hDC, MM_LOENGLISH);
|
||||||
|
ret = SetWindowExtEx(hDC, 320, 290, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 1417);
|
||||||
|
TEST(WindowExt.cy == 1063);
|
||||||
|
|
||||||
|
/* Values should not be changed */
|
||||||
|
WindowExt.cx = WindowExt.cy = 0;
|
||||||
|
ret = SetWindowExtEx(hDC, 560, 140, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 1417);
|
||||||
|
TEST(WindowExt.cy == 1063);
|
||||||
|
|
||||||
|
/* Check the viewport */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == GetDeviceCaps(GetDC(0), HORZRES));
|
||||||
|
TEST(ViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* Test setting in high english mode */
|
||||||
|
SetMapMode(hDC, MM_HIENGLISH);
|
||||||
|
ret = SetWindowExtEx(hDC, 320, 290, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 14173);
|
||||||
|
TEST(WindowExt.cy == 10630);
|
||||||
|
|
||||||
|
/* Values should not be changed */
|
||||||
|
WindowExt.cx = WindowExt.cy = 0;
|
||||||
|
ret = SetWindowExtEx(hDC, 1560, 1140, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 14173);
|
||||||
|
TEST(WindowExt.cy == 10630);
|
||||||
|
|
||||||
|
/* Check the viewport */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == GetDeviceCaps(GetDC(0), HORZRES));
|
||||||
|
TEST(ViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* Test setting in twips mode */
|
||||||
|
SetMapMode(hDC, MM_TWIPS);
|
||||||
|
ret = SetWindowExtEx(hDC, 3320, 3290, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 20409);
|
||||||
|
TEST(WindowExt.cy == 15307);
|
||||||
|
|
||||||
|
/* Values should not be changed */
|
||||||
|
WindowExt.cx = WindowExt.cy = 0;
|
||||||
|
ret = SetWindowExtEx(hDC, 4560, 4140, &WindowExt);
|
||||||
|
TEST(ret == 1);
|
||||||
|
TEST(WindowExt.cx == 20409);
|
||||||
|
TEST(WindowExt.cy == 15307);
|
||||||
|
|
||||||
|
/* Check the viewport */
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(ViewportExt.cx == GetDeviceCaps(GetDC(0), HORZRES));
|
||||||
|
TEST(ViewportExt.cy == -GetDeviceCaps(GetDC(0), VERTRES));
|
||||||
|
|
||||||
|
/* test manually modifying the dcattr, should go to tests for GetViewportExtEx */
|
||||||
|
SetMapMode(hDC, MM_ISOTROPIC);
|
||||||
|
ret = SetWindowExtEx(hDC, 420, 4140, &WindowExt);
|
||||||
|
pDC_Attr->szlWindowExt.cx = 0;
|
||||||
|
GetViewportExtEx(hDC, &ViewportExt);
|
||||||
|
TEST(pDC_Attr->szlWindowExt.cx == 0);
|
||||||
|
TEST(ViewportExt.cx == 0);
|
||||||
|
|
||||||
|
DeleteDC(hDC);
|
||||||
|
|
||||||
|
return APISTATUS_NORMAL;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue