Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289/* * PROJECT: ReactOS api tests * LICENSE: GPL - See COPYING in the top level directory * PURPOSE: Test for SetMapMode * PROGRAMMERS: Timo Kreuzer * Katayama Hirofumi MZ */
#include "precomp.h"
void Test_SetMapMode(){ HDC hDC; SIZE WindowExt, ViewportExt; ULONG ulMapMode; POINT pt;
hDC = CreateCompatibleDC(NULL); ok(hDC != 0, "CreateCompatibleDC failed, skipping tests.\n"); if (!hDC) return;
GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt);
ulMapMode = SetMapMode(hDC, MM_ISOTROPIC); ok_long(ulMapMode, MM_TEXT); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1);
SetLastError(0); ulMapMode = SetMapMode(hDC, 0); ok_err(0); ok_long(ulMapMode, 0);
/* Go through all valid values */ ulMapMode = SetMapMode(hDC, 1); ok_long(ulMapMode, MM_ISOTROPIC); ulMapMode = SetMapMode(hDC, 2); ok_long(ulMapMode, 1); ulMapMode = SetMapMode(hDC, 3); ok_long(ulMapMode, 2); ulMapMode = SetMapMode(hDC, 4); ok_long(ulMapMode, 3); ulMapMode = SetMapMode(hDC, 5); ok_long(ulMapMode, 4); ulMapMode = SetMapMode(hDC, 6); ok_long(ulMapMode, 5); ulMapMode = SetMapMode(hDC, 7); ok_long(ulMapMode, 6); ulMapMode = SetMapMode(hDC, 8); ok_long(ulMapMode, 7);
/* Test invalid value */ ulMapMode = SetMapMode(hDC, 9); ok_long(ulMapMode, 0); ulMapMode = SetMapMode(hDC, 10); ok_long(ulMapMode, 0);
ok_err(0);
/* Test NULL DC */ ulMapMode = SetMapMode((HDC)0, 2); ok_long(ulMapMode, 0); ok_err(ERROR_INVALID_PARAMETER);
/* Test NULL DC and invalid mode */ ulMapMode = SetMapMode((HDC)0, 10); ok_long(ulMapMode, 0); ok_err(ERROR_INVALID_PARAMETER);
/* Test invalid DC */ ulMapMode = SetMapMode((HDC)0x12345, 2); ok_long(ulMapMode, 0); ok_err(ERROR_INVALID_PARAMETER);
/* Test invalid DC and invalid mode */ ulMapMode = SetMapMode((HDC)0x12345, 10); ok_long(ulMapMode, 0); ok_err(ERROR_INVALID_PARAMETER);
DeleteDC(hDC);
/* Test a deleted DC */ ulMapMode = SetMapMode(hDC, 2); ok_long(ulMapMode, 0); ok_err(ERROR_INVALID_PARAMETER);
/* Test MM_TEXT */ hDC = CreateCompatibleDC(NULL); SetMapMode(hDC, MM_TEXT); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1); DeleteDC(hDC);
/* Test MM_ISOTROPIC */ hDC = CreateCompatibleDC(NULL); SetMapMode(hDC, MM_ISOTROPIC); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); //ok_long(WindowExt.cx, 3600); //ok_long(WindowExt.cy, 2700); //ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES) - 4); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES)); DeleteDC(hDC);
/* Test MM_ANISOTROPIC */ hDC = CreateCompatibleDC(NULL); SetMapMode(hDC, MM_ANISOTROPIC); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1);
/* set MM_ISOTROPIC first, the values will be kept */ SetMapMode(hDC, MM_ISOTROPIC); SetMapMode(hDC, MM_ANISOTROPIC); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); //ok_long(WindowExt.cx, 3600); //ok_long(WindowExt.cy, 2700); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES)); DeleteDC(hDC);
/* Test MM_LOMETRIC */ hDC = CreateCompatibleDC(NULL); SetMapMode(hDC, MM_LOMETRIC); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); //ok_long(WindowExt.cx, 3600); //ok_long(WindowExt.cy, 2700); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES)); DeleteDC(hDC);
/* Test MM_HIMETRIC */ hDC = CreateCompatibleDC(NULL); SetMapMode(hDC, MM_HIMETRIC); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); //ok_long(WindowExt.cx, 36000); //ok_long(WindowExt.cy, 27000); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES)); DeleteDC(hDC);
/* Test MM_LOENGLISH */ hDC = CreateCompatibleDC(NULL); SetMapMode(hDC, MM_LOENGLISH); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); //ok_long(WindowExt.cx, 1417); //ok_long(WindowExt.cy, 1063); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES)); DeleteDC(hDC);
/* Test MM_HIENGLISH */ hDC = CreateCompatibleDC(NULL); SetMapMode(hDC, MM_HIENGLISH); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); //ok_long(WindowExt.cx, 14173); //ok_long(WindowExt.cy, 10630); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES)); DeleteDC(hDC);
/* Test MM_TWIPS */ hDC = CreateCompatibleDC(NULL); SetMapMode(hDC, MM_TWIPS); GetWindowExtEx(hDC, &WindowExt); GetViewportExtEx(hDC, &ViewportExt); //ok_long(WindowExt.cx, 20409); //ok_long(WindowExt.cy, 15307); ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES)); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES)); DeleteDC(hDC);
// // Test mode and extents // hDC = CreateCompatibleDC(NULL); GetViewportExtEx(hDC, &ViewportExt); GetWindowExtEx(hDC, &WindowExt); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1);
SetMapMode(hDC, MM_ANISOTROPIC); GetViewportExtEx(hDC, &ViewportExt); GetWindowExtEx(hDC, &WindowExt); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1); SetWindowExtEx(hDC, 200, 200, NULL); SetViewportExtEx(hDC, 100, 100, NULL);
SetMapMode(hDC, MM_ANISOTROPIC); GetViewportExtEx(hDC, &ViewportExt); GetWindowExtEx(hDC, &WindowExt); ok_long(ViewportExt.cx, 100); ok_long(ViewportExt.cy, 100); ok_long(WindowExt.cx, 200); ok_long(WindowExt.cy, 200);
SetMapMode(hDC, MM_ANISOTROPIC); GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, 100); ok_long(ViewportExt.cy, 100); ok_long(WindowExt.cx, 200); ok_long(WindowExt.cy, 200);
SetMapMode(hDC, MM_ISOTROPIC); GetViewportExtEx(hDC, &ViewportExt); //ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES) - 4); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES)); SetWindowExtEx(hDC, 100, 100, NULL); SetViewportExtEx(hDC, 100, 100, NULL);
SetMapMode(hDC, MM_ISOTROPIC); GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, 100); ok_long(ViewportExt.cy, 100);
SetMapMode(hDC, MM_ANISOTROPIC); GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, 100); ok_long(ViewportExt.cy, 100);
SetMapMode(hDC, MM_TEXT); GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1);
SetMapMode(hDC, MM_ANISOTROPIC); GetViewportExtEx(hDC, &ViewportExt); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1);
SetMapMode(hDC, MM_ISOTROPIC); GetViewportExtEx(hDC, &ViewportExt); //ok_long(ViewportExt.cx, GetDeviceCaps(GetDC(0), HORZRES) - 4); ok_long(ViewportExt.cy, -GetDeviceCaps(GetDC(0), VERTRES));
SetMapMode(hDC, MM_TEXT); GetViewportExtEx(hDC, &ViewportExt); GetWindowExtEx(hDC, &WindowExt); ok_long(ViewportExt.cx, 1); ok_long(ViewportExt.cy, 1); ok_long(WindowExt.cx, 1); ok_long(WindowExt.cy, 1); DeleteDC(hDC);
// // Test mode and GetCurrentPositionEx // hDC = CreateCompatibleDC(NULL); MoveToEx(hDC, 100, 100, NULL); SetMapMode(hDC, MM_ANISOTROPIC); GetCurrentPositionEx(hDC, &pt); ok_long(pt.x, 100); ok_long(pt.y, 100); SetMapMode(hDC, MM_TEXT); GetCurrentPositionEx(hDC, &pt); ok_long(pt.x, 100); ok_long(pt.y, 100); SetMapMode(hDC, MM_ISOTROPIC); GetCurrentPositionEx(hDC, &pt); ok_long(pt.x, 100); ok_long(pt.y, 100); DeleteDC(hDC);}
START_TEST(SetMapMode){ Test_SetMapMode();}