mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-01 19:26:16 +00:00
[APITESTS]
Convert dciman32api, user32api and wa2_32 into wine style tests svn path=/trunk/; revision=48619
This commit is contained in:
@@ -1,19 +0,0 @@
|
||||
#include "dciman32api.h"
|
||||
|
||||
HINSTANCE g_hInstance;
|
||||
|
||||
BOOL
|
||||
IsFunctionPresent(LPWSTR lpszFunction)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int APIENTRY
|
||||
WinMain(HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
g_hInstance = hInstance;
|
||||
return TestMain(L"dciman32api", L"dciman32.dll");
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
#ifndef _WIN32_WINNT
|
||||
#define _WIN32_WINNT 0x0501
|
||||
#endif
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <windows.h>
|
||||
#include <windows.h>
|
||||
#include <ndk/ntndk.h>
|
||||
#include <wingdi.h>
|
||||
#include <winddi.h>
|
||||
#include <d3dnthal.h>
|
||||
#include <prntfont.h>
|
||||
|
||||
/* Public Win32K Headers */
|
||||
#include <win32k/ntgdityp.h>
|
||||
#include <ntgdi.h>
|
||||
#include <win32k/ntgdihdl.h>
|
||||
|
||||
#include "../apitest.h"
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
<module name="dciman32api" type="win32cui">
|
||||
<include base="dciman32api">.</include>
|
||||
<library>apitest</library>
|
||||
<library>user32</library>
|
||||
<library>gdi32</library>
|
||||
<library>shell32</library>
|
||||
<file>dciman32api.c</file>
|
||||
<file>testlist.c</file>
|
||||
</module>
|
||||
@@ -1,32 +0,0 @@
|
||||
#ifndef _DCIMAN32TESTLIST_H
|
||||
#define _DCIMAN32TESTLIST_H
|
||||
|
||||
#include "dciman32api.h"
|
||||
|
||||
/* include the tests */
|
||||
#include "tests/DCICreatePrimary.c"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* The List of tests */
|
||||
TESTENTRY TestList[] =
|
||||
{
|
||||
{ L"DCICreatePrimary", Test_DCICreatePrimary }
|
||||
};
|
||||
|
||||
/* The function that gives us the number of tests */
|
||||
INT NumTests(void)
|
||||
{
|
||||
return sizeof(TestList) / sizeof(TESTENTRY);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
@@ -1,8 +0,0 @@
|
||||
|
||||
INT
|
||||
Test_DCICreatePrimary(PTESTINFO pti)
|
||||
{
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
<file>apitest.c</file>
|
||||
</module>
|
||||
|
||||
<directory name="dciman32api">
|
||||
<xi:include href="dciman32api/dciman32api.rbuild" />
|
||||
<directory name="dciman32">
|
||||
<xi:include href="dciman32/dciman32_apitest.rbuild" />
|
||||
</directory>
|
||||
|
||||
<directory name="gdi32">
|
||||
<xi:include href="gdi32/gdi32_apitest.rbuild" />
|
||||
</directory>
|
||||
|
||||
<directory name="user32api">
|
||||
<xi:include href="user32api/user32api.rbuild" />
|
||||
<directory name="user32">
|
||||
<xi:include href="user32/user32_apitest.rbuild" />
|
||||
</directory>
|
||||
|
||||
<if property="ARCH" value="i386">
|
||||
@@ -29,6 +29,6 @@
|
||||
</if>
|
||||
|
||||
<directory name="ws2_32">
|
||||
<xi:include href="ws2_32/ws2_32.rbuild" />
|
||||
<xi:include href="ws2_32/ws2_32_apitest.rbuild" />
|
||||
</directory>
|
||||
</group>
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
#ifndef _USER32TESTLIST_H
|
||||
#define _USER32TESTLIST_H
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
||||
|
||||
#include "user32api.h"
|
||||
|
||||
/* include the tests */
|
||||
#include "tests/GetSystemMetrics.c"
|
||||
#include "tests/InitializeLpkHooks.c"
|
||||
#include "tests/ScrollDC.c"
|
||||
#include "tests/ScrollWindowEx.c"
|
||||
#include "tests/RealGetWindowClass.c"
|
||||
|
||||
/* The List of tests */
|
||||
TESTENTRY TestList[] =
|
||||
{
|
||||
{ L"GetSystemMetrics", Test_GetSystemMetrics },
|
||||
{ L"InitializeLpkHooks", Test_InitializeLpkHooks },
|
||||
{ L"ScrollDC", Test_ScrollDC },
|
||||
{ L"ScrollWindowEx", Test_ScrollWindowEx },
|
||||
{ L"RealGetWindowClass", Test_RealGetWindowClass },
|
||||
};
|
||||
|
||||
/* The function that gives us the number of tests */
|
||||
INT NumTests(void)
|
||||
{
|
||||
return ARRAY_SIZE(TestList);
|
||||
}
|
||||
|
||||
#endif /* _USER32TESTLIST_H */
|
||||
|
||||
/* EOF */
|
||||
@@ -1,396 +0,0 @@
|
||||
|
||||
INT
|
||||
Test_GetSystemMetrics(PTESTINFO pti)
|
||||
{
|
||||
INT ret;
|
||||
HDC hDC;
|
||||
BOOL BoolVal;
|
||||
UINT UintVal;
|
||||
RECT rect;
|
||||
|
||||
SetLastError(0);
|
||||
hDC = GetDC(0);
|
||||
|
||||
ret = GetSystemMetrics(0);
|
||||
TEST(ret > 0);
|
||||
|
||||
ret = GetSystemMetrics(64);
|
||||
TEST(ret == 0);
|
||||
ret = GetSystemMetrics(65);
|
||||
TEST(ret == 0);
|
||||
ret = GetSystemMetrics(66);
|
||||
TEST(ret == 0);
|
||||
|
||||
|
||||
ret = GetSystemMetrics(SM_CXSCREEN);
|
||||
TEST(ret == GetDeviceCaps(hDC, HORZRES));
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYSCREEN);
|
||||
TEST(ret == GetDeviceCaps(hDC, VERTRES));
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXVSCROLL);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYHSCROLL);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYCAPTION);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXBORDER);
|
||||
SystemParametersInfoW(SPI_GETFOCUSBORDERWIDTH, 0, &UintVal, 0);
|
||||
TEST(ret == UintVal);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYBORDER);
|
||||
SystemParametersInfoW(SPI_GETFOCUSBORDERHEIGHT, 0, &UintVal, 0);
|
||||
TEST(ret == UintVal);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXDLGFRAME);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYDLGFRAME);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYVTHUMB);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXHTHUMB);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXICON);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYICON);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXCURSOR);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYCURSOR);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMENU);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
SystemParametersInfoW(SPI_GETWORKAREA, 0, &rect, 0);
|
||||
ret = GetSystemMetrics(SM_CXFULLSCREEN);
|
||||
TEST(ret == rect.right);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYFULLSCREEN);
|
||||
TEST(ret == rect.bottom - rect.top - GetSystemMetrics(SM_CYCAPTION));
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYKANJIWINDOW);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_MOUSEPRESENT);
|
||||
TEST(ret == 1);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYVSCROLL);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXHSCROLL);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_DEBUG);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_SWAPBUTTON);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_RESERVED1);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_RESERVED2);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_RESERVED3);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_RESERVED4);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXMIN);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMIN);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXSIZE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYSIZE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXFRAME);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYFRAME);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXMINTRACK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMINTRACK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXDOUBLECLK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYDOUBLECLK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXICONSPACING);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYICONSPACING);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_MENUDROPALIGNMENT);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_PENWINDOWS);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_DBCSENABLED);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CMOUSEBUTTONS);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
#if(WINVER >= 0x0400)
|
||||
ret = GetSystemMetrics(SM_SECURE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXEDGE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYEDGE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXMINSPACING);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMINSPACING);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXSMICON);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYSMICON);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYSMCAPTION);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXSMSIZE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYSMSIZE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXMENUSIZE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMENUSIZE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_ARRANGE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXMINIMIZED);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMINIMIZED);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXMAXTRACK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMAXTRACK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXMAXIMIZED);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMAXIMIZED);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_NETWORK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CLEANBOOT);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXDRAG);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYDRAG);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_SHOWSOUNDS);
|
||||
SystemParametersInfoW(SPI_GETSHOWSOUNDS, 0, &BoolVal, 0);
|
||||
TEST(ret == BoolVal);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXMENUCHECK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYMENUCHECK);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_SLOWMACHINE);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_MIDEASTENABLED);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
#endif
|
||||
|
||||
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
|
||||
ret = GetSystemMetrics(SM_MOUSEWHEELPRESENT);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
#endif
|
||||
|
||||
#if(WINVER >= 0x0500)
|
||||
ret = GetSystemMetrics(SM_XVIRTUALSCREEN);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_YVIRTUALSCREEN);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXVIRTUALSCREEN);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYVIRTUALSCREEN);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CMONITORS);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_SAMEDISPLAYFORMAT);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
#endif
|
||||
|
||||
#if(_WIN32_WINNT >= 0x0500)
|
||||
ret = GetSystemMetrics(SM_IMMENABLED);
|
||||
TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
#endif
|
||||
|
||||
#if(_WIN32_WINNT >= 0x0501)
|
||||
ret = GetSystemMetrics(SM_CXFOCUSBORDER);
|
||||
SystemParametersInfoW(SPI_GETFOCUSBORDERWIDTH, 0, &UintVal, 0);
|
||||
TEST(ret == UintVal);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CYFOCUSBORDER);
|
||||
SystemParametersInfoW(SPI_GETFOCUSBORDERHEIGHT, 0, &UintVal, 0);
|
||||
TEST(ret == UintVal);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_TABLETPC);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_MEDIACENTER);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_STARTER);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_SERVERR2);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
#endif
|
||||
|
||||
#if(_WIN32_WINNT >= 0x0600)
|
||||
ret = GetSystemMetrics(SM_MOUSEHORIZONTALWHEELPRESENT);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
|
||||
ret = GetSystemMetrics(SM_CXPADDEDBORDER);
|
||||
// TEST(ret == 0);
|
||||
TEST(GetLastError() == 0);
|
||||
#endif
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
|
||||
typedef struct _LPK_LPEDITCONTROL_LIST
|
||||
{
|
||||
PVOID EditCreate;
|
||||
PVOID EditIchToXY;
|
||||
PVOID EditMouseToIch;
|
||||
PVOID EditCchInWidth;
|
||||
PVOID EditGetLineWidth;
|
||||
PVOID EditDrawText;
|
||||
PVOID EditHScroll;
|
||||
PVOID EditMoveSelection;
|
||||
PVOID EditVerifyText;
|
||||
PVOID EditNextWord;
|
||||
PVOID EditSetMenu;
|
||||
PVOID EditProcessMenu;
|
||||
PVOID EditCreateCaret;
|
||||
PVOID EditAdjustCaret;
|
||||
} LPK_LPEDITCONTROL_LIST, *PLPK_LPEDITCONTROL_LIST;
|
||||
|
||||
|
||||
DWORD (APIENTRY *fpLpkTabbedTextOut) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID);
|
||||
DWORD (APIENTRY *fpLpkPSMTextOut) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID);
|
||||
DWORD (APIENTRY *fpLpkDrawTextEx) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID);
|
||||
PLPK_LPEDITCONTROL_LIST (APIENTRY *fpLpkEditControl) ();
|
||||
|
||||
int Count_myLpkTabbedTextOut = 0;
|
||||
int Count_myLpkPSMTextOut = 0;
|
||||
int Count_myLpkDrawTextEx = 0;
|
||||
|
||||
DWORD WINAPI myLpkTabbedTextOut (LPVOID x1,LPVOID x2,LPVOID x3, LPVOID x4, LPVOID x5, LPVOID x6, LPVOID x7, LPVOID x8,
|
||||
LPVOID x9, LPVOID x10, LPVOID x11, LPVOID x12)
|
||||
{
|
||||
Count_myLpkTabbedTextOut++;
|
||||
return fpLpkTabbedTextOut(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12);
|
||||
}
|
||||
|
||||
DWORD myLpkPSMTextOut (LPVOID x1,LPVOID x2,LPVOID x3,LPVOID x4,LPVOID x5,LPVOID x6)
|
||||
{
|
||||
Count_myLpkPSMTextOut++;
|
||||
return fpLpkPSMTextOut ( x1, x2, x3, x4, x5, x6);
|
||||
}
|
||||
|
||||
DWORD myLpkDrawTextEx(LPVOID x1,LPVOID x2,LPVOID x3,LPVOID x4,LPVOID x5, LPVOID x6, LPVOID x7, LPVOID x8, LPVOID x9,LPVOID x10)
|
||||
{
|
||||
Count_myLpkDrawTextEx++;
|
||||
return fpLpkDrawTextEx(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10);
|
||||
}
|
||||
|
||||
|
||||
typedef struct _USER32_INTERN_INITALIZEHOOKS
|
||||
{
|
||||
PVOID fpLpkTabbedTextOut;
|
||||
PVOID fpLpkPSMTextOut;
|
||||
PVOID fpLpkDrawTextEx;
|
||||
PLPK_LPEDITCONTROL_LIST fpListLpkEditControl;
|
||||
} USER32_INTERN_INITALIZEHOOKS, *PUSER32_INTERN_INITALIZEHOOKS;
|
||||
|
||||
VOID WINAPI InitializeLpkHooks (PUSER32_INTERN_INITALIZEHOOKS);
|
||||
|
||||
INT
|
||||
Test_InitializeLpkHooks(PTESTINFO pti)
|
||||
{
|
||||
USER32_INTERN_INITALIZEHOOKS setup;
|
||||
HMODULE lib = LoadLibrary("LPK.DLL");
|
||||
|
||||
TEST(lib != NULL);
|
||||
if (lib != NULL)
|
||||
{
|
||||
fpLpkTabbedTextOut = (DWORD (APIENTRY *) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID, LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID)) GetProcAddress(lib, "LpkTabbedTextOut");
|
||||
fpLpkPSMTextOut = (DWORD (APIENTRY *) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID)) GetProcAddress(lib, "fpLpkPSMTextOut");
|
||||
fpLpkDrawTextEx = (DWORD (APIENTRY *) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID)) GetProcAddress(lib, "LpkDrawTextEx");
|
||||
fpLpkEditControl = (PLPK_LPEDITCONTROL_LIST (APIENTRY *) (VOID)) GetProcAddress(lib, "LpkEditControl");
|
||||
|
||||
setup.fpLpkTabbedTextOut = myLpkTabbedTextOut;
|
||||
setup.fpLpkPSMTextOut = myLpkPSMTextOut;
|
||||
setup.fpLpkDrawTextEx = myLpkDrawTextEx;
|
||||
|
||||
/* we have not add any test to this api */
|
||||
setup.fpListLpkEditControl = (PLPK_LPEDITCONTROL_LIST)fpLpkEditControl;
|
||||
|
||||
/* use our own api that we just made */
|
||||
InitializeLpkHooks(&setup);
|
||||
|
||||
/* FIXME add test now */
|
||||
|
||||
/* restore */
|
||||
setup.fpLpkTabbedTextOut = fpLpkTabbedTextOut;
|
||||
setup.fpLpkPSMTextOut = fpLpkPSMTextOut;
|
||||
setup.fpLpkDrawTextEx = fpLpkDrawTextEx;
|
||||
setup.fpListLpkEditControl = (PLPK_LPEDITCONTROL_LIST)fpLpkEditControl;
|
||||
InitializeLpkHooks(&setup);
|
||||
}
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
#include "../user32api.h"
|
||||
|
||||
typedef struct _TestData
|
||||
{
|
||||
BOOL OverrideWndProc; /* TRUE if lpfnWndProc should be overridden */
|
||||
LPCSTR ClassName; /* Name of the new class to register */
|
||||
DWORD WndExtra; /* Remove these WNDCLASS::cbWndExtra flags */
|
||||
BOOL ExpectsHwnd; /* TRUE if a HWND should be created to run tests on */
|
||||
LPCSTR ExpectedClassNameBefore; /* Expected class name before any dialog function is called */
|
||||
LPCSTR ExpectedClassNameAfter; /* Expected class name after any dialog function is called */
|
||||
} TestData;
|
||||
|
||||
static TestData RealClassTestData[] =
|
||||
{
|
||||
{
|
||||
TRUE,
|
||||
"OverrideWndProc_with_DLGWINDOWEXTRA_TRUE",
|
||||
0,
|
||||
TRUE,
|
||||
"OverrideWndProc_with_DLGWINDOWEXTRA_TRUE",
|
||||
"#32770",
|
||||
},
|
||||
{
|
||||
TRUE,
|
||||
"OverrideWndProc_without_DLGWINDOWEXTRA_TRUE",
|
||||
DLGWINDOWEXTRA,
|
||||
TRUE,
|
||||
"OverrideWndProc_without_DLGWINDOWEXTRA_TRUE",
|
||||
"OverrideWndProc_without_DLGWINDOWEXTRA_TRUE",
|
||||
},
|
||||
{
|
||||
FALSE,
|
||||
"DefaultWndProc_with_DLGWINDOWEXTRA_FALSE",
|
||||
0,
|
||||
TRUE,
|
||||
"#32770",
|
||||
"#32770",
|
||||
},
|
||||
{
|
||||
FALSE,
|
||||
"DefaultWndProc_without_DLGWINDOWEXTRA_FALSE",
|
||||
DLGWINDOWEXTRA,
|
||||
FALSE,
|
||||
"N/A",
|
||||
"N/A",
|
||||
},
|
||||
};
|
||||
|
||||
INT
|
||||
Test_RealGetWindowClass(PTESTINFO pti)
|
||||
{
|
||||
int testNo;
|
||||
UINT Result;
|
||||
CHAR Buffer[1024];
|
||||
|
||||
Result = RealGetWindowClass( NULL, Buffer, ARRAY_SIZE(Buffer) );
|
||||
TEST(Result == 0);
|
||||
TEST(GetLastError() == ERROR_INVALID_WINDOW_HANDLE);
|
||||
|
||||
for (testNo = 0; testNo < ARRAY_SIZE(RealClassTestData); testNo++)
|
||||
{
|
||||
ATOM atom;
|
||||
WNDCLASSA cls;
|
||||
HWND hWnd;
|
||||
|
||||
/* Register classes, "derived" from built-in dialog, with and without the DLGWINDOWEXTRA flag set */
|
||||
GetClassInfoA(0, "#32770", &cls);
|
||||
if (RealClassTestData[testNo].OverrideWndProc)
|
||||
cls.lpfnWndProc = DefWindowProcA;
|
||||
cls.lpszClassName = RealClassTestData[testNo].ClassName;
|
||||
cls.cbWndExtra &= ~RealClassTestData[testNo].WndExtra;
|
||||
atom = RegisterClassA (&cls);
|
||||
ASSERT(atom != 0);
|
||||
|
||||
/* Create a window */
|
||||
hWnd = CreateWindowEx( WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR |
|
||||
WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CONTROLPARENT | WS_EX_APPWINDOW,
|
||||
RealClassTestData[testNo].ClassName,
|
||||
RealClassTestData[testNo].ClassName,
|
||||
WS_POPUPWINDOW | WS_CLIPSIBLINGS | WS_DLGFRAME | WS_OVERLAPPED |
|
||||
WS_MINIMIZEBOX | WS_MAXIMIZEBOX | DS_3DLOOK | DS_SETFONT | DS_MODALFRAME,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
|
||||
NULL, NULL, g_hInstance, 0);
|
||||
|
||||
/* Do we expect a HWND at all? */
|
||||
if (RealClassTestData[testNo].ExpectsHwnd)
|
||||
{
|
||||
TEST(hWnd != NULL);
|
||||
|
||||
if (hWnd != NULL)
|
||||
{
|
||||
/* Get the "real" class name */
|
||||
Result = RealGetWindowClass( hWnd, Buffer, ARRAY_SIZE(Buffer) );
|
||||
printf("Buffer: %s\nExpectedClassNameBefore(%d): %s\n", Buffer, testNo, RealClassTestData[testNo].ExpectedClassNameBefore);
|
||||
TEST( Result != 0 );
|
||||
TEST( strcmp( Buffer, RealClassTestData[testNo].ExpectedClassNameBefore ) == 0 );
|
||||
|
||||
/* Call a function that requires a dialog window */
|
||||
DefDlgProcA( hWnd, DM_SETDEFID, IDCANCEL, 0 );
|
||||
|
||||
/* Get the "real" class name again */
|
||||
Result = RealGetWindowClass( hWnd, Buffer, ARRAY_SIZE(Buffer) );
|
||||
printf("Buffer: %s\nExpectedClassNameAfter(%d): %s\n", Buffer, testNo, RealClassTestData[testNo].ExpectedClassNameAfter);
|
||||
TEST( Result != 0 );
|
||||
TEST( strcmp( Buffer, RealClassTestData[testNo].ExpectedClassNameAfter ) == 0 );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TEST(hWnd == NULL);
|
||||
}
|
||||
|
||||
/* Cleanup */
|
||||
DestroyWindow(hWnd);
|
||||
UnregisterClass(RealClassTestData[testNo].ClassName, g_hInstance);
|
||||
}
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
#include "../user32api.h"
|
||||
|
||||
INT
|
||||
Test_ScrollDC(PTESTINFO pti)
|
||||
{
|
||||
HWND hWnd, hWnd2;
|
||||
HDC hDC;
|
||||
HRGN hrgn;
|
||||
RECT rcClip;
|
||||
|
||||
/* Create a window */
|
||||
hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
|
||||
100, 100, 100, 100,
|
||||
NULL, NULL, g_hInstance, 0);
|
||||
UpdateWindow(hWnd);
|
||||
hDC = GetDC(hWnd);
|
||||
|
||||
/* Assert that no update region is there */
|
||||
hrgn = CreateRectRgn(0,0,0,0);
|
||||
ASSERT(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
|
||||
|
||||
/* Test normal scrolling */
|
||||
TEST(ScrollDC(hDC, 0, 0, NULL, NULL, hrgn, NULL) == TRUE);
|
||||
|
||||
/* Scroll with invalid update region */
|
||||
DeleteObject(hrgn);
|
||||
TEST(ScrollDC(hDC, 50, 0, NULL, NULL, hrgn, NULL) == FALSE);
|
||||
hrgn = CreateRectRgn(0,0,0,0);
|
||||
TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
|
||||
|
||||
/* Scroll with invalid update rect pointer */
|
||||
TEST(ScrollDC(hDC, 50, 0, NULL, NULL, NULL, (PRECT)1) == 0);
|
||||
TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
|
||||
|
||||
/* Scroll with a clip rect */
|
||||
rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
|
||||
TEST(ScrollDC(hDC, 50, 0, NULL, &rcClip, hrgn, NULL) == TRUE);
|
||||
TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
|
||||
|
||||
/* Scroll with a clip rect */
|
||||
rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
|
||||
TEST(ScrollDC(hDC, 50, 50, NULL, &rcClip, hrgn, NULL) == TRUE);
|
||||
TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
|
||||
|
||||
/* Overlap with another window */
|
||||
hWnd2 = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
|
||||
30, 160, 100, 100,
|
||||
NULL, NULL, g_hInstance, 0);
|
||||
UpdateWindow(hWnd2);
|
||||
|
||||
/* Cleanup */
|
||||
ReleaseDC(hWnd, hDC);
|
||||
DestroyWindow(hWnd);
|
||||
DestroyWindow(hWnd2);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
#include "../user32api.h"
|
||||
|
||||
INT
|
||||
Test_ScrollWindowEx(PTESTINFO pti)
|
||||
{
|
||||
HWND hWnd;
|
||||
HRGN hrgn;
|
||||
int Result;
|
||||
|
||||
/* Create a window */
|
||||
hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
|
||||
NULL, NULL, g_hInstance, 0);
|
||||
UpdateWindow(hWnd);
|
||||
|
||||
/* Assert that no update region is there */
|
||||
hrgn = CreateRectRgn(0,0,0,0);
|
||||
ASSERT(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
|
||||
|
||||
Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, 0);
|
||||
TEST(Result == SIMPLEREGION);
|
||||
TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
|
||||
|
||||
Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
TEST(Result == SIMPLEREGION);
|
||||
TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == SIMPLEREGION);
|
||||
UpdateWindow(hWnd);
|
||||
|
||||
// test invalid update region
|
||||
DeleteObject(hrgn);
|
||||
Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, hrgn, NULL, SW_INVALIDATE);
|
||||
TEST(Result == ERROR);
|
||||
hrgn = CreateRectRgn(0,0,0,0);
|
||||
UpdateWindow(hWnd);
|
||||
|
||||
// Test invalid updaterect pointer
|
||||
Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, (LPRECT)1, SW_INVALIDATE);
|
||||
TEST(Result == ERROR);
|
||||
TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == SIMPLEREGION);
|
||||
|
||||
// test for alignment of rects
|
||||
|
||||
DeleteObject(hrgn);
|
||||
DestroyWindow(hWnd);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
#include "user32api.h"
|
||||
|
||||
HINSTANCE g_hInstance;
|
||||
|
||||
BOOL
|
||||
IsFunctionPresent(LPWSTR lpszFunction)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int APIENTRY WinMain(HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
g_hInstance = hInstance;
|
||||
return TestMain(L"user32api", L"user32.dll");
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
#ifndef _USER32TEST_H
|
||||
#define _USER32TEST_H
|
||||
|
||||
#include "../apitest.h"
|
||||
|
||||
extern HINSTANCE g_hInstance;
|
||||
|
||||
#endif /* _USER32TEST_H */
|
||||
|
||||
/* EOF */
|
||||
@@ -1,9 +0,0 @@
|
||||
<module name="user32api" type="win32cui">
|
||||
<include base="user32api">.</include>
|
||||
<library>apitest</library>
|
||||
<library>user32</library>
|
||||
<library>gdi32</library>
|
||||
<library>shell32</library>
|
||||
<file>user32api.c</file>
|
||||
<file>testlist.c</file>
|
||||
</module>
|
||||
@@ -6,25 +6,27 @@
|
||||
* COPYRIGHT: Copyright 2008 Colin Finck <[email protected]>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <wine/test.h>
|
||||
#include "ws2_32.h"
|
||||
|
||||
int CreateSocket(PTESTINFO pti, SOCKET* psck)
|
||||
int CreateSocket(SOCKET* psck)
|
||||
{
|
||||
/* Create the socket */
|
||||
*psck = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
TEST(*psck != INVALID_SOCKET);
|
||||
ok(*psck != INVALID_SOCKET, "*psck = %d\n", *psck);
|
||||
|
||||
if(*psck == INVALID_SOCKET)
|
||||
{
|
||||
printf("Winsock error code is %u\n", WSAGetLastError());
|
||||
WSACleanup();
|
||||
return APISTATUS_ASSERTION_FAILED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ConnectToReactOSWebsite(PTESTINFO pti, SOCKET sck)
|
||||
int ConnectToReactOSWebsite(SOCKET sck)
|
||||
{
|
||||
int iResult;
|
||||
struct hostent* host;
|
||||
@@ -38,11 +40,11 @@ int ConnectToReactOSWebsite(PTESTINFO pti, SOCKET sck)
|
||||
sa.sin_port = htons(80);
|
||||
|
||||
SCKTEST(connect(sck, (struct sockaddr *)&sa, sizeof(sa)));
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetRequestAndWait(PTESTINFO pti, SOCKET sck)
|
||||
int GetRequestAndWait(SOCKET sck)
|
||||
{
|
||||
const char szGetRequest[] = "GET / HTTP/1.0\r\n\r\n";
|
||||
int iResult;
|
||||
@@ -50,7 +52,7 @@ int GetRequestAndWait(PTESTINFO pti, SOCKET sck)
|
||||
|
||||
/* Send the GET request */
|
||||
SCKTEST(send(sck, szGetRequest, strlen(szGetRequest), 0));
|
||||
TEST(iResult == strlen(szGetRequest));
|
||||
ok(iResult == strlen(szGetRequest), "iResult = %d\n", iResult);
|
||||
|
||||
/* Shutdown the SEND connection */
|
||||
SCKTEST(shutdown(sck, SD_SEND));
|
||||
@@ -60,6 +62,6 @@ int GetRequestAndWait(PTESTINFO pti, SOCKET sck)
|
||||
FD_SET(sck, &readable);
|
||||
|
||||
SCKTEST(select(0, &readable, NULL, NULL, NULL));
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* PROJECT: ReactOS api tests
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* PURPOSE: Test for ioctlsocket
|
||||
* PROGRAMMERS: Colin Finck
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <wine/test.h>
|
||||
#include <windows.h>
|
||||
#include "ws2_32.h"
|
||||
|
||||
int Test_ioctlsocket()
|
||||
{
|
||||
LPSTR pszBuf;
|
||||
int iResult;
|
||||
SOCKET sck;
|
||||
ULONG BytesAvailable;
|
||||
ULONG BytesToRead;
|
||||
WSADATA wdata;
|
||||
|
||||
/* Start up Winsock */
|
||||
iResult = WSAStartup(MAKEWORD(2, 2), &wdata);
|
||||
ok(iResult == 0, "WSAStartup failed. iResult = %d\n", iResult);
|
||||
|
||||
/* If we call ioctlsocket without a socket, it should return with an error and do nothing. */
|
||||
BytesAvailable = 0xdeadbeef;
|
||||
iResult = ioctlsocket(0, FIONREAD, &BytesAvailable);
|
||||
ok(iResult == SOCKET_ERROR, "iResult = %d\n", iResult);
|
||||
ok(BytesAvailable == 0xdeadbeef, "BytesAvailable = %ld\n", BytesAvailable);
|
||||
|
||||
/* Create the socket */
|
||||
if (!CreateSocket(&sck))
|
||||
{
|
||||
ok(0, "CreateSocket failed. Aborting test.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Now we can pass at least a socket, but we have no connection yet. The function should return 0. */
|
||||
BytesAvailable = 0xdeadbeef;
|
||||
iResult = ioctlsocket(sck, FIONREAD, &BytesAvailable);
|
||||
ok(iResult == 0, "iResult = %d\n", iResult);
|
||||
ok(BytesAvailable == 0, "BytesAvailable = %ld\n", BytesAvailable);
|
||||
|
||||
/* Connect to "www.reactos.org" */
|
||||
if (!ConnectToReactOSWebsite(sck))
|
||||
{
|
||||
ok(0, "ConnectToReactOSWebsite failed. Aborting test.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Even with a connection, there shouldn't be any bytes available. */
|
||||
iResult = ioctlsocket(sck, FIONREAD, &BytesAvailable);
|
||||
ok(iResult == 0, "iResult = %d\n", iResult);
|
||||
ok(BytesAvailable == 0, "BytesAvailable = %ld\n", BytesAvailable);
|
||||
|
||||
/* Send the GET request */
|
||||
if (!GetRequestAndWait(sck))
|
||||
{
|
||||
ok(0, "GetRequestAndWait failed. Aborting test.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Try ioctlsocket with FIONREAD. There should be bytes available now. */
|
||||
SCKTEST(ioctlsocket(sck, FIONREAD, &BytesAvailable));
|
||||
ok(BytesAvailable != 0, "BytesAvailable = %ld\n", BytesAvailable);
|
||||
|
||||
/* Get half of the data */
|
||||
BytesToRead = BytesAvailable / 2;
|
||||
pszBuf = (LPSTR) HeapAlloc(GetProcessHeap(), 0, BytesToRead);
|
||||
SCKTEST(recv(sck, pszBuf, BytesToRead, 0));
|
||||
HeapFree(GetProcessHeap(), 0, pszBuf);
|
||||
|
||||
BytesToRead = BytesAvailable - BytesToRead;
|
||||
|
||||
/* Now try ioctlsocket again. BytesAvailable should be at the value saved in BytesToRead now. */
|
||||
SCKTEST(ioctlsocket(sck, FIONREAD, &BytesAvailable));
|
||||
ok(BytesAvailable == BytesToRead, "BytesAvailable = %ld\n", BytesAvailable);
|
||||
|
||||
/* Read those bytes */
|
||||
pszBuf = (LPSTR) HeapAlloc(GetProcessHeap(), 0, BytesToRead);
|
||||
SCKTEST(recv(sck, pszBuf, BytesToRead, 0));
|
||||
HeapFree(GetProcessHeap(), 0, pszBuf);
|
||||
|
||||
/* Try it for the last time. BytesAvailable should be at 0 now. */
|
||||
SCKTEST(ioctlsocket(sck, FIONREAD, &BytesAvailable));
|
||||
ok(BytesAvailable == 0, "BytesAvailable = %ld\n", BytesAvailable);
|
||||
|
||||
closesocket(sck);
|
||||
WSACleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
START_TEST(ioctlsocket)
|
||||
{
|
||||
Test_ioctlsocket();
|
||||
}
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
/*
|
||||
* PROJECT: ws2_32.dll API tests
|
||||
* LICENSE: GPLv2 or any later version
|
||||
* FILE: apitests/ws2_32/tests/recv.c
|
||||
* PURPOSE: Tests for the recv function
|
||||
* COPYRIGHT: Copyright 2008 Colin Finck <mail@colinfinck.de>
|
||||
* PROJECT: ReactOS api tests
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* PURPOSE: Test for recv
|
||||
* PROGRAMMERS: Colin Finck
|
||||
*/
|
||||
|
||||
#include "../ws2_32.h"
|
||||
#include <stdio.h>
|
||||
#include <wine/test.h>
|
||||
#include <windows.h>
|
||||
#include "ws2_32.h"
|
||||
|
||||
#define RECV_BUF 4
|
||||
|
||||
/* For valid test results, the ReactOS Website needs to return at least 8 bytes on a "GET / HTTP/1.0" request.
|
||||
Also the first 4 bytes and the last 4 bytes need to be different.
|
||||
Both factors usually apply on standard HTTP responses. */
|
||||
INT
|
||||
Test_recv(PTESTINFO pti)
|
||||
|
||||
int Test_recv()
|
||||
{
|
||||
const char szDummyBytes[RECV_BUF] = {0xFF, 0x00, 0xFF, 0x00};
|
||||
|
||||
@@ -25,45 +27,59 @@ Test_recv(PTESTINFO pti)
|
||||
WSADATA wdata;
|
||||
|
||||
/* Start up Winsock */
|
||||
TEST(WSAStartup(MAKEWORD(2, 2), &wdata) == 0);
|
||||
iResult = WSAStartup(MAKEWORD(2, 2), &wdata);
|
||||
ok(iResult == 0, "WSAStartup failed, iResult == %d\n", iResult);
|
||||
|
||||
/* If we call recv without a socket, it should return with an error and do nothing. */
|
||||
memcpy(szBuf1, szDummyBytes, RECV_BUF);
|
||||
TEST(recv(0, szBuf1, RECV_BUF, 0) == SOCKET_ERROR);
|
||||
TEST(!memcmp(szBuf1, szDummyBytes, RECV_BUF));
|
||||
iResult = recv(0, szBuf1, RECV_BUF, 0);
|
||||
ok(iResult == SOCKET_ERROR, "iRseult = %d\n", iResult);
|
||||
ok(!memcmp(szBuf1, szDummyBytes, RECV_BUF), "not equal\n");
|
||||
|
||||
/* Create the socket */
|
||||
iResult = CreateSocket(pti, &sck);
|
||||
if(iResult != APISTATUS_NORMAL)
|
||||
return iResult;
|
||||
if (!CreateSocket(&sck))
|
||||
{
|
||||
ok(0, "CreateSocket failed. Aborting test.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Now we can pass at least a socket, but we have no connection yet. Should return with an error and do nothing. */
|
||||
memcpy(szBuf1, szDummyBytes, RECV_BUF);
|
||||
TEST(recv(sck, szBuf1, RECV_BUF, 0) == SOCKET_ERROR);
|
||||
TEST(!memcmp(szBuf1, szDummyBytes, RECV_BUF));
|
||||
iResult = recv(sck, szBuf1, RECV_BUF, 0);
|
||||
ok(iResult == SOCKET_ERROR, "iResult = %d\n", iResult);
|
||||
ok(!memcmp(szBuf1, szDummyBytes, RECV_BUF), "not equal\n");
|
||||
|
||||
/* Connect to "www.reactos.org" */
|
||||
iResult = ConnectToReactOSWebsite(pti, sck);
|
||||
if(iResult != APISTATUS_NORMAL)
|
||||
return iResult;
|
||||
if (!ConnectToReactOSWebsite(sck))
|
||||
{
|
||||
ok(0, "ConnectToReactOSWebsite failed. Aborting test.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Send the GET request */
|
||||
iResult = GetRequestAndWait(pti, sck);
|
||||
if(iResult != APISTATUS_NORMAL)
|
||||
return iResult;
|
||||
if (!GetRequestAndWait(sck))
|
||||
{
|
||||
ok(0, "GetRequestAndWait failed. Aborting test.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Receive the data.
|
||||
MSG_PEEK will not change the internal number of bytes read, so that a subsequent request should return the same bytes again. */
|
||||
SCKTEST(recv(sck, szBuf1, RECV_BUF, MSG_PEEK));
|
||||
SCKTEST(recv(sck, szBuf2, RECV_BUF, 0));
|
||||
TEST(!memcmp(szBuf1, szBuf2, RECV_BUF));
|
||||
ok(!memcmp(szBuf1, szBuf2, RECV_BUF), "not equal\n");
|
||||
|
||||
/* The last recv() call moved the internal file pointer, so that the next request should return different data. */
|
||||
SCKTEST(recv(sck, szBuf1, RECV_BUF, 0));
|
||||
TEST(memcmp(szBuf1, szBuf2, RECV_BUF));
|
||||
ok(memcmp(szBuf1, szBuf2, RECV_BUF), "equal\n");
|
||||
|
||||
closesocket(sck);
|
||||
WSACleanup();
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
START_TEST(recv)
|
||||
{
|
||||
Test_recv();
|
||||
}
|
||||
|
||||
@@ -1,33 +1,18 @@
|
||||
/*
|
||||
* PROJECT: ws2_32.dll API tests
|
||||
* LICENSE: GPLv2 or any later version
|
||||
* FILE: apitests/ws2_32/testlist.c
|
||||
* PURPOSE: Test list file
|
||||
* COPYRIGHT: Copyright 2008 Colin Finck <[email protected]>
|
||||
*/
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define __ROS_LONG64__
|
||||
#include <windows.h>
|
||||
|
||||
#ifndef _WS2_32_TESTLIST_H
|
||||
#define _WS2_32_TESTLIST_H
|
||||
#define STANDALONE
|
||||
#include "wine/test.h"
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
||||
extern void func_ioctlsocket(void);
|
||||
extern void func_recv(void);
|
||||
|
||||
#include "ws2_32.h"
|
||||
|
||||
/* include the tests */
|
||||
#include "tests/ioctlsocket.c"
|
||||
#include "tests/recv.c"
|
||||
|
||||
/* The List of tests */
|
||||
TESTENTRY TestList[] =
|
||||
const struct test winetest_testlist[] =
|
||||
{
|
||||
{ L"ioctlsocket", Test_ioctlsocket },
|
||||
{ L"recv", Test_recv }
|
||||
{ "ioctlsocket", func_ioctlsocket },
|
||||
{ "recv", func_recv },
|
||||
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
/* The function that gives us the number of tests */
|
||||
INT NumTests(void)
|
||||
{
|
||||
return ARRAY_SIZE(TestList);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
/*
|
||||
* PROJECT: ws2_32.dll API tests
|
||||
* LICENSE: GPLv2 or any later version
|
||||
* FILE: apitests/ws2_32/tests/ioctlsocket.c
|
||||
* PURPOSE: Tests for the ioctlsocket function
|
||||
* COPYRIGHT: Copyright 2008 Colin Finck <[email protected]>
|
||||
*/
|
||||
|
||||
#include "../ws2_32.h"
|
||||
|
||||
/* For valid test results, the ReactOS Website needs to return at least 2 bytes on a "GET / HTTP/1.0" request. */
|
||||
INT
|
||||
Test_ioctlsocket(PTESTINFO pti)
|
||||
{
|
||||
LPSTR pszBuf;
|
||||
int iResult;
|
||||
SOCKET sck;
|
||||
ULONG BytesAvailable;
|
||||
ULONG BytesToRead;
|
||||
WSADATA wdata;
|
||||
|
||||
/* Start up Winsock */
|
||||
TEST(WSAStartup(MAKEWORD(2, 2), &wdata) == 0);
|
||||
|
||||
/* If we call ioctlsocket without a socket, it should return with an error and do nothing. */
|
||||
BytesAvailable = 0xdeadbeef;
|
||||
TEST(ioctlsocket(0, FIONREAD, &BytesAvailable) == SOCKET_ERROR);
|
||||
TEST(BytesAvailable == 0xdeadbeef);
|
||||
|
||||
/* Create the socket */
|
||||
iResult = CreateSocket(pti, &sck);
|
||||
if(iResult != APISTATUS_NORMAL)
|
||||
return iResult;
|
||||
|
||||
/* Now we can pass at least a socket, but we have no connection yet. The function should return 0. */
|
||||
BytesAvailable = 0xdeadbeef;
|
||||
TEST(ioctlsocket(sck, FIONREAD, &BytesAvailable) == 0);
|
||||
TEST(BytesAvailable == 0);
|
||||
|
||||
/* Connect to "www.reactos.org" */
|
||||
iResult = ConnectToReactOSWebsite(pti, sck);
|
||||
if(iResult != APISTATUS_NORMAL)
|
||||
return iResult;
|
||||
|
||||
/* Even with a connection, there shouldn't be any bytes available. */
|
||||
TEST(ioctlsocket(sck, FIONREAD, &BytesAvailable) == 0);
|
||||
TEST(BytesAvailable == 0);
|
||||
|
||||
/* Send the GET request */
|
||||
iResult = GetRequestAndWait(pti, sck);
|
||||
if(iResult != APISTATUS_NORMAL)
|
||||
return iResult;
|
||||
|
||||
/* Try ioctlsocket with FIONREAD. There should be bytes available now. */
|
||||
SCKTEST(ioctlsocket(sck, FIONREAD, &BytesAvailable));
|
||||
TEST(BytesAvailable != 0);
|
||||
|
||||
/* Get half of the data */
|
||||
BytesToRead = BytesAvailable / 2;
|
||||
pszBuf = (LPSTR) HeapAlloc(g_hHeap, 0, BytesToRead);
|
||||
SCKTEST(recv(sck, pszBuf, BytesToRead, 0));
|
||||
HeapFree(g_hHeap, 0, pszBuf);
|
||||
|
||||
BytesToRead = BytesAvailable - BytesToRead;
|
||||
|
||||
/* Now try ioctlsocket again. BytesAvailable should be at the value saved in BytesToRead now. */
|
||||
SCKTEST(ioctlsocket(sck, FIONREAD, &BytesAvailable));
|
||||
TEST(BytesAvailable == BytesToRead);
|
||||
|
||||
/* Read those bytes */
|
||||
pszBuf = (LPSTR) HeapAlloc(g_hHeap, 0, BytesToRead);
|
||||
SCKTEST(recv(sck, pszBuf, BytesToRead, 0));
|
||||
HeapFree(g_hHeap, 0, pszBuf);
|
||||
|
||||
/* Try it for the last time. BytesAvailable should be at 0 now. */
|
||||
SCKTEST(ioctlsocket(sck, FIONREAD, &BytesAvailable));
|
||||
TEST(BytesAvailable == 0);
|
||||
|
||||
closesocket(sck);
|
||||
WSACleanup();
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* PROJECT: ws2_32.dll API tests
|
||||
* LICENSE: GPLv2 or any later version
|
||||
* FILE: apitests/ws2_32/ws2_32.c
|
||||
* PURPOSE: Program entry point
|
||||
* COPYRIGHT: Copyright 2008 Colin Finck <[email protected]>
|
||||
*/
|
||||
|
||||
#include "ws2_32.h"
|
||||
|
||||
HANDLE g_hHeap;
|
||||
|
||||
BOOL
|
||||
IsFunctionPresent(LPWSTR lpszFunction)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int wmain()
|
||||
{
|
||||
g_hHeap = GetProcessHeap();
|
||||
|
||||
return TestMain(L"ws2_32_apitests", L"ws2_32.dll");
|
||||
}
|
||||
@@ -11,24 +11,22 @@
|
||||
|
||||
#include <winsock2.h>
|
||||
|
||||
#include "../apitest.h"
|
||||
|
||||
/* Simple macro for executing a socket command and doing cleanup operations in case of a failure */
|
||||
#define SCKTEST(_cmd_) \
|
||||
iResult = _cmd_; \
|
||||
TEST(iResult != SOCKET_ERROR); \
|
||||
ok(iResult != SOCKET_ERROR, "iResult = %d\n", iResult); \
|
||||
if(iResult == SOCKET_ERROR) \
|
||||
{ \
|
||||
printf("Winsock error code is %u\n", WSAGetLastError()); \
|
||||
closesocket(sck); \
|
||||
WSACleanup(); \
|
||||
return APISTATUS_ASSERTION_FAILED; \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
/* helpers.c */
|
||||
int CreateSocket(PTESTINFO pti, SOCKET* sck);
|
||||
int ConnectToReactOSWebsite(PTESTINFO pti, SOCKET sck);
|
||||
int GetRequestAndWait(PTESTINFO pti, SOCKET sck);
|
||||
int CreateSocket(SOCKET* sck);
|
||||
int ConnectToReactOSWebsite(SOCKET sck);
|
||||
int GetRequestAndWait(SOCKET sck);
|
||||
|
||||
/* ws2_32.c */
|
||||
extern HANDLE g_hHeap;
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
<module name="ws2_32_apitests" type="win32cui" unicode="yes">
|
||||
<library>apitest</library>
|
||||
<library>user32</library>
|
||||
<library>shell32</library>
|
||||
<library>ws2_32</library>
|
||||
<file>helpers.c</file>
|
||||
<file>testlist.c</file>
|
||||
<file>ws2_32.c</file>
|
||||
</module>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
||||
<group>
|
||||
<module name="ws2_32_apitest" type="win32cui" installbase="bin" installname="ws2_32_apitest.exe">
|
||||
<include base="ws2_32_apitest">.</include>
|
||||
<library>wine</library>
|
||||
<library>gdi32</library>
|
||||
<library>user32</library>
|
||||
<library>pseh</library>
|
||||
<library>ws2_32</library>
|
||||
<file>testlist.c</file>
|
||||
<file>helpers.c</file>
|
||||
|
||||
<file>ioctlsocket.c</file>
|
||||
<file>recv.c</file>
|
||||
|
||||
</module>
|
||||
</group>
|
||||
Reference in New Issue
Block a user