mirror of
https://github.com/reactos/reactos.git
synced 2025-04-18 03:34:11 +00:00
- Updated kernel32 test to Wine-20040504.
svn path=/trunk/; revision=9299
This commit is contained in:
parent
57aa128d43
commit
c789493a59
10 changed files with 914 additions and 439 deletions
|
@ -1,4 +1,4 @@
|
|||
# $Id: Makefile,v 1.1 2004/02/14 20:11:42 sedwards Exp $
|
||||
# $Id: Makefile,v 1.2 2004/05/04 17:25:18 navaraf Exp $
|
||||
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
|
@ -9,7 +9,7 @@ TARGET_TYPE = program
|
|||
TARGET_APPTYPE = console
|
||||
|
||||
# require os code to explicitly request A/W version of structs/functions
|
||||
TARGET_CFLAGS += -D_DISABLE_TIDENTS -D__USE_W32API
|
||||
TARGET_CFLAGS += -D_DISABLE_TIDENTS -D__USE_W32API -DWINVER=0x0500
|
||||
|
||||
TARGET_NAME = kernel32_test
|
||||
|
||||
|
|
|
@ -137,8 +137,9 @@ static void testWriteNotWrappedNotProcessed(HANDLE hCon, COORD sbSize)
|
|||
{
|
||||
COORD c;
|
||||
DWORD len, mode;
|
||||
const char* mytest = "abcd\nf\tg";
|
||||
const int mylen = strlen(mytest);
|
||||
char* mytest;
|
||||
int mylen;
|
||||
int ret;
|
||||
int p;
|
||||
|
||||
ok(GetConsoleMode(hCon, &mode) && SetConsoleMode(hCon, mode & ~(ENABLE_PROCESSED_OUTPUT|ENABLE_WRAP_AT_EOL_OUTPUT)),
|
||||
|
@ -148,7 +149,12 @@ static void testWriteNotWrappedNotProcessed(HANDLE hCon, COORD sbSize)
|
|||
c.X = sbSize.X - 3; c.Y = 0;
|
||||
ok(SetConsoleCursorPosition(hCon, c) != 0, "Cursor in upper-left-3\n");
|
||||
|
||||
ok(WriteConsole(hCon, mytest, mylen, &len, NULL) != 0 && len == mylen, "WriteConsole\n");
|
||||
mytest = "123";
|
||||
|
||||
mylen = strlen(mytest);
|
||||
|
||||
ret = WriteConsole(hCon, mytest, mylen, &len, NULL);
|
||||
ok(ret != 0 && len == mylen, "Couldn't write, ret = %d, len = %ld\n", ret, len);
|
||||
c.Y = 0;
|
||||
for (p = mylen - 3; p < mylen; p++)
|
||||
{
|
||||
|
@ -161,26 +167,12 @@ static void testWriteNotWrappedNotProcessed(HANDLE hCon, COORD sbSize)
|
|||
|
||||
p = sbSize.X - 3 + mylen % 3;
|
||||
c.X = p; c.Y = 0;
|
||||
okCURSOR(hCon, c);
|
||||
|
||||
/* write line, wrapping disabled, strings end on end of line */
|
||||
c.X = sbSize.X - mylen; c.Y = 0;
|
||||
ok(SetConsoleCursorPosition(hCon, c) != 0, "Cursor in upper-left-3\n");
|
||||
|
||||
ok(WriteConsole(hCon, mytest, mylen, &len, NULL) != 0 && len == mylen, "WriteConsole\n");
|
||||
c.Y = 0;
|
||||
for (p = 0; p < mylen; p++)
|
||||
{
|
||||
c.X = sbSize.X - mylen + p;
|
||||
okCHAR(hCon, c, mytest[p], TEST_ATTRIB);
|
||||
}
|
||||
|
||||
c.X = 0; c.Y = 1;
|
||||
okCHAR(hCon, c, ' ', DEFAULT_ATTRIB);
|
||||
|
||||
p = sbSize.X - mylen;
|
||||
c.X = p; c.Y = 0;
|
||||
okCURSOR(hCon, c);
|
||||
}
|
||||
|
||||
static void testWriteNotWrappedProcessed(HANDLE hCon, COORD sbSize)
|
||||
|
@ -290,24 +282,9 @@ static void testWriteWrappedNotProcessed(HANDLE hCon, COORD sbSize)
|
|||
c.X = sbSize.X - 3; c.Y = 0;
|
||||
ok(SetConsoleCursorPosition(hCon, c) != 0, "Cursor in upper-left-3\n");
|
||||
|
||||
ok(WriteConsole(hCon, mytest, mylen, &len, NULL) != 0 && len == mylen, "WriteConsole\n");
|
||||
c.Y = 0;
|
||||
for (p = 0; p < 3; p++)
|
||||
{
|
||||
c.X = sbSize.X - 3 + p;
|
||||
okCHAR(hCon, c, mytest[p], TEST_ATTRIB);
|
||||
}
|
||||
|
||||
c.Y = 1;
|
||||
for (p = 0; p < mylen - 3; p++)
|
||||
{
|
||||
c.X = p;
|
||||
okCHAR(hCon, c, mytest[p + 3], TEST_ATTRIB);
|
||||
}
|
||||
c.X = mylen - 3;
|
||||
okCHAR(hCon, c, ' ', DEFAULT_ATTRIB);
|
||||
|
||||
okCURSOR(hCon, c);
|
||||
}
|
||||
|
||||
static void testWriteWrappedProcessed(HANDLE hCon, COORD sbSize)
|
||||
|
|
|
@ -193,21 +193,19 @@ static void test_CreateDirectoryA(void)
|
|||
ret = RemoveDirectoryA(tmpdir);
|
||||
ok(ret == TRUE, "RemoveDirectoryA should always succeed\n");
|
||||
|
||||
todo_wine {
|
||||
lstrcatA(tmpdir, "?");
|
||||
ret = CreateDirectoryA(tmpdir, NULL);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"CreateDirectoryA with ? wildcard name should fail, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
ret = RemoveDirectoryA(tmpdir);
|
||||
lstrcatA(tmpdir, "?");
|
||||
ret = CreateDirectoryA(tmpdir, NULL);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"CreateDirectoryA with ? wildcard name should fail, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
ret = RemoveDirectoryA(tmpdir);
|
||||
|
||||
tmpdir[lstrlenA(tmpdir) - 1] = '*';
|
||||
ret = CreateDirectoryA(tmpdir, NULL);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"CreateDirectoryA with * wildcard name should fail, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
ret = RemoveDirectoryA(tmpdir);
|
||||
}
|
||||
tmpdir[lstrlenA(tmpdir) - 1] = '*';
|
||||
ret = CreateDirectoryA(tmpdir, NULL);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"CreateDirectoryA with * wildcard name should fail, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
ret = RemoveDirectoryA(tmpdir);
|
||||
}
|
||||
|
||||
static void test_CreateDirectoryW(void)
|
||||
|
@ -256,21 +254,19 @@ static void test_CreateDirectoryW(void)
|
|||
ret = RemoveDirectoryW(tmpdir);
|
||||
ok(ret == TRUE, "RemoveDirectoryW should always succeed\n");
|
||||
|
||||
todo_wine {
|
||||
lstrcatW(tmpdir, questionW);
|
||||
ret = CreateDirectoryW(tmpdir, NULL);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"CreateDirectoryW with ? wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
ret = RemoveDirectoryW(tmpdir);
|
||||
lstrcatW(tmpdir, questionW);
|
||||
ret = CreateDirectoryW(tmpdir, NULL);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"CreateDirectoryW with ? wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
ret = RemoveDirectoryW(tmpdir);
|
||||
|
||||
tmpdir[lstrlenW(tmpdir) - 1] = '*';
|
||||
ret = CreateDirectoryW(tmpdir, NULL);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"CreateDirectoryW with * wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
ret = RemoveDirectoryW(tmpdir);
|
||||
}
|
||||
tmpdir[lstrlenW(tmpdir) - 1] = '*';
|
||||
ret = CreateDirectoryW(tmpdir, NULL);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"CreateDirectoryW with * wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
ret = RemoveDirectoryW(tmpdir);
|
||||
}
|
||||
|
||||
static void test_RemoveDirectoryA(void)
|
||||
|
@ -286,19 +282,17 @@ static void test_RemoveDirectoryA(void)
|
|||
ret = RemoveDirectoryA(tmpdir);
|
||||
ok(ret == TRUE, "RemoveDirectoryA should always succeed\n");
|
||||
|
||||
todo_wine {
|
||||
lstrcatA(tmpdir, "?");
|
||||
ret = RemoveDirectoryA(tmpdir);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"RemoveDirectoryA with ? wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
lstrcatA(tmpdir, "?");
|
||||
ret = RemoveDirectoryA(tmpdir);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"RemoveDirectoryA with ? wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
|
||||
tmpdir[lstrlenA(tmpdir) - 1] = '*';
|
||||
ret = RemoveDirectoryA(tmpdir);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"RemoveDirectoryA with * wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
}
|
||||
tmpdir[lstrlenA(tmpdir) - 1] = '*';
|
||||
ret = RemoveDirectoryA(tmpdir);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"RemoveDirectoryA with * wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
}
|
||||
|
||||
static void test_RemoveDirectoryW(void)
|
||||
|
@ -319,20 +313,17 @@ static void test_RemoveDirectoryW(void)
|
|||
ret = RemoveDirectoryW(tmpdir);
|
||||
ok(ret == TRUE, "RemoveDirectoryW should always succeed\n");
|
||||
|
||||
todo_wine {
|
||||
lstrcatW(tmpdir, questionW);
|
||||
ret = RemoveDirectoryW(tmpdir);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"RemoveDirectoryW with wildcard should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
|
||||
tmpdir[lstrlenW(tmpdir) - 1] = '*';
|
||||
ret = RemoveDirectoryW(tmpdir);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"RemoveDirectoryW with * wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
}
|
||||
lstrcatW(tmpdir, questionW);
|
||||
ret = RemoveDirectoryW(tmpdir);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"RemoveDirectoryW with wildcard should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
|
||||
tmpdir[lstrlenW(tmpdir) - 1] = '*';
|
||||
ret = RemoveDirectoryW(tmpdir);
|
||||
ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
|
||||
"RemoveDirectoryW with * wildcard name should fail with error 183, ret=%s error=%ld\n",
|
||||
ret ? " True" : "False", GetLastError());
|
||||
}
|
||||
|
||||
START_TEST(directory)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Unit tests for file functions in Wine
|
||||
*
|
||||
* Copyright (c) 2002 Jakob Eriksson
|
||||
* Copyright (c) 2002, 2004 Jakob Eriksson
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -28,6 +28,15 @@
|
|||
#include "winbase.h"
|
||||
#include "winerror.h"
|
||||
|
||||
static int dll_capable(const char *dll, const char *function)
|
||||
{
|
||||
HMODULE module = GetModuleHandleA(dll);
|
||||
if (!module) return 0;
|
||||
|
||||
return (GetProcAddress(module, function) != NULL);
|
||||
}
|
||||
|
||||
|
||||
LPCSTR filename = "testfile.xxx";
|
||||
LPCSTR sillytext =
|
||||
"en larvig liten text dx \033 gx hej 84 hej 4484 ! \001\033 bla bl\na.. bla bla."
|
||||
|
@ -270,9 +279,8 @@ static void test__lcreat( void )
|
|||
} else { /* only NT succeeds */
|
||||
_lclose(filehandle);
|
||||
find=FindFirstFileA (slashname, &search_results);
|
||||
if (INVALID_HANDLE_VALUE==find)
|
||||
ok (0, "file \"%s\" not found\n", slashname);
|
||||
else {
|
||||
if (INVALID_HANDLE_VALUE!=find)
|
||||
{
|
||||
ok (0!=FindClose (find), "FindClose complains (%ld)\n", GetLastError ());
|
||||
slashname[strlen(slashname)-1]=0;
|
||||
ok (!strcmp (slashname, search_results.cFileName),
|
||||
|
@ -597,6 +605,7 @@ static void test_CreateFileW(void)
|
|||
HANDLE hFile;
|
||||
WCHAR temp_path[MAX_PATH];
|
||||
WCHAR filename[MAX_PATH];
|
||||
static const WCHAR emptyW[]={'\0'};
|
||||
static const WCHAR prefix[] = {'p','f','x',0};
|
||||
DWORD ret;
|
||||
|
||||
|
@ -616,25 +625,55 @@ static void test_CreateFileW(void)
|
|||
|
||||
ret = DeleteFileW(filename);
|
||||
ok(ret, "DeleteFileW: error %ld\n", GetLastError());
|
||||
|
||||
hFile = CreateFileW(NULL, GENERIC_READ, 0, NULL,
|
||||
CREATE_NEW, FILE_FLAG_RANDOM_ACCESS, 0);
|
||||
ok(hFile == INVALID_HANDLE_VALUE && GetLastError() == ERROR_PATH_NOT_FOUND,
|
||||
"CreateFileW(NULL) returned ret=%p error=%ld\n",hFile,GetLastError());
|
||||
|
||||
hFile = CreateFileW(emptyW, GENERIC_READ, 0, NULL,
|
||||
CREATE_NEW, FILE_FLAG_RANDOM_ACCESS, 0);
|
||||
ok(hFile == INVALID_HANDLE_VALUE && GetLastError() == ERROR_PATH_NOT_FOUND,
|
||||
"CreateFileW(\"\") returned ret=%p error=%ld\n",hFile,GetLastError());
|
||||
}
|
||||
|
||||
|
||||
static void test_GetTempFileNameA() {
|
||||
static void test_GetTempFileNameA()
|
||||
{
|
||||
UINT result;
|
||||
char out[MAX_PATH];
|
||||
char *expected = "c:\\windows\\abc2.tmp";
|
||||
char expected[MAX_PATH + 10];
|
||||
char windowsdir[MAX_PATH + 10];
|
||||
char windowsdrive[3];
|
||||
|
||||
/* this test may depend on the config file settings */
|
||||
result = GetTempFileNameA("C:", "abc", 1, out);
|
||||
ok( result != 0, "GetTempFileNameA: error %ld\n", GetLastError() );
|
||||
ok( ((out[0] == 'C') && (out[1] == ':')) && (out[2] == '\\'), "GetTempFileNameA: first three characters should be C:\\, string was actually %s\n", out );
|
||||
result = GetWindowsDirectory(windowsdir, sizeof(windowsdir));
|
||||
ok(result < sizeof(windowsdir), "windowsdir is abnormally long!\n");
|
||||
ok(result != 0, "GetWindowsDirectory: error %ld\n", GetLastError());
|
||||
|
||||
result = GetTempFileNameA("c:\\windows\\", "abc", 2, out);
|
||||
ok( result != 0, "GetTempFileNameA: error %ld\n", GetLastError() );
|
||||
ok( lstrcmpiA( out, expected ) == 0, "GetTempFileNameA: Unexpected output \"%s\" vs \"%s\"\n", out, expected );
|
||||
/* If the Windows directory is the root directory, it ends in backslash, not else. */
|
||||
if (strlen(windowsdir) != 3) /* As in "C:\" or "F:\" */
|
||||
{
|
||||
strcat(windowsdir, "\\");
|
||||
}
|
||||
|
||||
windowsdrive[0] = windowsdir[0];
|
||||
windowsdrive[1] = windowsdir[1];
|
||||
windowsdrive[2] = '\0';
|
||||
|
||||
result = GetTempFileNameA(windowsdrive, "abc", 1, out);
|
||||
ok(result != 0, "GetTempFileNameA: error %ld\n", GetLastError());
|
||||
ok(((out[0] == windowsdrive[0]) && (out[1] == ':')) && (out[2] == '\\'),
|
||||
"GetTempFileNameA: first three characters should be %c:\\, string was actually %s\n",
|
||||
windowsdrive[0], out);
|
||||
|
||||
result = GetTempFileNameA(windowsdir, "abc", 2, out);
|
||||
ok(result != 0, "GetTempFileNameA: error %ld\n", GetLastError());
|
||||
expected[0] = '\0';
|
||||
strcat(expected, windowsdir);
|
||||
strcat(expected, "abc2.tmp");
|
||||
ok(lstrcmpiA(out, expected) == 0, "GetTempFileNameA: Unexpected output \"%s\" vs \"%s\"\n",
|
||||
out, expected);
|
||||
}
|
||||
|
||||
|
||||
static void test_DeleteFileA( void )
|
||||
{
|
||||
BOOL ret;
|
||||
|
@ -648,12 +687,18 @@ static void test_DeleteFileA( void )
|
|||
ok(!ret && (GetLastError() == ERROR_PATH_NOT_FOUND ||
|
||||
GetLastError() == ERROR_BAD_PATHNAME),
|
||||
"DeleteFileA(\"\") returned ret=%d error=%ld\n",ret,GetLastError());
|
||||
|
||||
ret = DeleteFileA("nul");
|
||||
ok(!ret && (GetLastError() == ERROR_FILE_NOT_FOUND ||
|
||||
GetLastError() == ERROR_INVALID_PARAMETER ||
|
||||
GetLastError() == ERROR_ACCESS_DENIED),
|
||||
"DeleteFileA(\"nul\") returned ret=%d error=%ld\n",ret,GetLastError());
|
||||
}
|
||||
|
||||
static void test_DeleteFileW( void )
|
||||
{
|
||||
BOOL ret;
|
||||
WCHAR emptyW[]={'\0'};
|
||||
static const WCHAR emptyW[]={'\0'};
|
||||
|
||||
ret = DeleteFileW(NULL);
|
||||
if (ret==0 && GetLastError()==ERROR_CALL_NOT_IMPLEMENTED)
|
||||
|
@ -702,14 +747,13 @@ static void test_MoveFileA(void)
|
|||
lstrcpyA(source, dest);
|
||||
lstrcpyA(dest, tempdir);
|
||||
lstrcatA(dest, "\\wild?.*");
|
||||
/* FIXME: if we create a file with wildcards we can't delete it now that DeleteFile works correctly */
|
||||
ret = MoveFileA(source, dest);
|
||||
todo_wine {
|
||||
ok(!ret, "MoveFileA: shouldn't move to wildcard file\n");
|
||||
ok(GetLastError() == ERROR_INVALID_NAME,
|
||||
"MoveFileA: with wildcards, unexpected error %ld\n", GetLastError());
|
||||
#if 0
|
||||
if (ret || (GetLastError() != ERROR_INVALID_NAME))
|
||||
{
|
||||
ok(!ret, "MoveFileA: shouldn't move to wildcard file\n");
|
||||
ok(GetLastError() == ERROR_INVALID_NAME,
|
||||
"MoveFileA: with wildcards, unexpected error %ld\n", GetLastError());
|
||||
if (ret || (GetLastError() != ERROR_INVALID_NAME))
|
||||
{
|
||||
WIN32_FIND_DATAA fd;
|
||||
char temppath[MAX_PATH];
|
||||
HANDLE hFind;
|
||||
|
@ -730,14 +774,11 @@ static void test_MoveFileA(void)
|
|||
while (FindNextFileA(hFind, &fd));
|
||||
FindClose(hFind);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
ret = DeleteFileA(source);
|
||||
ok(ret, "DeleteFileA: error %ld\n", GetLastError());
|
||||
ret = DeleteFileA(dest);
|
||||
ok(!ret, "DeleteFileA: error %ld\n", GetLastError());
|
||||
}
|
||||
|
||||
ret = DeleteFileA(source);
|
||||
ok(ret, "DeleteFileA: error %ld\n", GetLastError());
|
||||
ret = DeleteFileA(dest);
|
||||
ok(!ret, "DeleteFileA: error %ld\n", GetLastError());
|
||||
ret = RemoveDirectoryA(tempdir);
|
||||
ok(ret, "DeleteDirectoryA: error %ld\n", GetLastError());
|
||||
}
|
||||
|
@ -803,7 +844,7 @@ static void test_offset_in_overlapped_structure(void)
|
|||
if (rc || GetLastError()!=ERROR_INVALID_PARAMETER) {
|
||||
ok(rc, "WriteFile error %ld\n", GetLastError());
|
||||
ok(done == sizeof(pattern), "expected number of bytes written %lu\n", done);
|
||||
trace("Current offset = %04lx\n", SetFilePointer(hFile, 0, NULL, FILE_CURRENT));
|
||||
/*trace("Current offset = %04lx\n", SetFilePointer(hFile, 0, NULL, FILE_CURRENT));*/
|
||||
ok(SetFilePointer(hFile, 0, NULL, FILE_CURRENT) == (PATTERN_OFFSET + sizeof(pattern)),
|
||||
"expected file offset %d\n", PATTERN_OFFSET + sizeof(pattern));
|
||||
|
||||
|
@ -832,7 +873,7 @@ static void test_offset_in_overlapped_structure(void)
|
|||
if (rc || GetLastError()!=ERROR_INVALID_PARAMETER) {
|
||||
ok(rc, "ReadFile error %ld\n", GetLastError());
|
||||
ok(done == sizeof(pattern), "expected number of bytes read %lu\n", done);
|
||||
trace("Current offset = %04lx\n", SetFilePointer(hFile, 0, NULL, FILE_CURRENT));
|
||||
/*trace("Current offset = %04lx\n", SetFilePointer(hFile, 0, NULL, FILE_CURRENT));*/
|
||||
ok(SetFilePointer(hFile, 0, NULL, FILE_CURRENT) == (PATTERN_OFFSET + sizeof(pattern)),
|
||||
"expected file offset %d\n", PATTERN_OFFSET + sizeof(pattern));
|
||||
ok(!memcmp(buf, pattern, sizeof(pattern)), "pattern match failed\n");
|
||||
|
@ -848,6 +889,9 @@ static void test_LockFile(void)
|
|||
HANDLE handle;
|
||||
DWORD written;
|
||||
OVERLAPPED overlapped;
|
||||
int limited_LockFile;
|
||||
int limited_UnLockFile;
|
||||
int lockfileex_capable;
|
||||
|
||||
handle = CreateFileA( filename, GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
|
||||
|
@ -861,7 +905,12 @@ static void test_LockFile(void)
|
|||
|
||||
ok( LockFile( handle, 0, 0, 0, 0 ), "LockFile failed\n" );
|
||||
ok( UnlockFile( handle, 0, 0, 0, 0 ), "UnlockFile failed\n" );
|
||||
ok( !UnlockFile( handle, 0, 0, 0, 0 ), "UnlockFile succeeded\n" );
|
||||
|
||||
limited_UnLockFile = 0;
|
||||
if (UnlockFile( handle, 0, 0, 0, 0 ))
|
||||
{
|
||||
limited_UnLockFile = 1;
|
||||
}
|
||||
|
||||
ok( LockFile( handle, 10, 0, 20, 0 ), "LockFile 10,20 failed\n" );
|
||||
/* overlapping locks must fail */
|
||||
|
@ -878,18 +927,39 @@ static void test_LockFile(void)
|
|||
overlapped.Offset = 100;
|
||||
overlapped.OffsetHigh = 0;
|
||||
overlapped.hEvent = 0;
|
||||
ok( LockFileEx( handle, 0, 0, 100, 0, &overlapped ), "LockFileEx 100,100 failed\n" );
|
||||
|
||||
lockfileex_capable = dll_capable("kernel32", "LockFileEx");
|
||||
if (lockfileex_capable)
|
||||
{
|
||||
/* Test for broken LockFileEx a la Windows 95 OSR2. */
|
||||
if (LockFileEx( handle, 0, 0, 100, 0, &overlapped ))
|
||||
{
|
||||
/* LockFileEx is probably OK, test it more. */
|
||||
ok( LockFileEx( handle, 0, 0, 100, 0, &overlapped ),
|
||||
"LockFileEx 100,100 failed\n" );
|
||||
}
|
||||
}
|
||||
|
||||
/* overlapping shared locks are OK */
|
||||
overlapped.Offset = 150;
|
||||
ok( LockFileEx( handle, 0, 0, 100, 0, &overlapped ), "LockFileEx 150,100 failed\n" );
|
||||
limited_UnLockFile || ok( LockFileEx( handle, 0, 0, 100, 0, &overlapped ), "LockFileEx 150,100 failed\n" );
|
||||
|
||||
/* but exclusive is not */
|
||||
ok( !LockFileEx( handle, LOCKFILE_EXCLUSIVE_LOCK|LOCKFILE_FAIL_IMMEDIATELY, 0, 50, 0, &overlapped ),
|
||||
"LockFileEx exclusive 150,50 succeeded\n" );
|
||||
ok( UnlockFileEx( handle, 0, 100, 0, &overlapped ), "UnlockFileEx 150,100 failed\n" );
|
||||
ok( !UnlockFileEx( handle, 0, 100, 0, &overlapped ), "UnlockFileEx 150,100 again succeeded\n" );
|
||||
overlapped.Offset = 100;
|
||||
ok( UnlockFileEx( handle, 0, 100, 0, &overlapped ), "UnlockFileEx 100,100 failed\n" );
|
||||
ok( !UnlockFileEx( handle, 0, 100, 0, &overlapped ), "UnlockFileEx 100,100 again succeeded\n" );
|
||||
if (lockfileex_capable)
|
||||
{
|
||||
ok( !LockFileEx( handle, LOCKFILE_EXCLUSIVE_LOCK|LOCKFILE_FAIL_IMMEDIATELY,
|
||||
0, 50, 0, &overlapped ),
|
||||
"LockFileEx exclusive 150,50 succeeded\n" );
|
||||
if (dll_capable("kernel32.dll", "UnlockFileEx"))
|
||||
{
|
||||
if (!UnlockFileEx( handle, 0, 100, 0, &overlapped ))
|
||||
{ /* UnLockFile is capable. */
|
||||
overlapped.Offset = 100;
|
||||
ok( !UnlockFileEx( handle, 0, 100, 0, &overlapped ),
|
||||
"UnlockFileEx 150,100 again succeeded\n" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ok( LockFile( handle, 0, 0x10000000, 0, 0xf0000000 ), "LockFile failed\n" );
|
||||
ok( !LockFile( handle, ~0, ~0, 1, 0 ), "LockFile ~0,1 succeeded\n" );
|
||||
|
@ -899,22 +969,102 @@ static void test_LockFile(void)
|
|||
/* wrap-around lock should not do anything */
|
||||
/* (but still succeeds on NT4 so we don't check result) */
|
||||
LockFile( handle, 0, 0x10000000, 0, 0xf0000001 );
|
||||
ok( LockFile( handle, ~0, ~0, 1, 0 ), "LockFile ~0,1 failed\n" );
|
||||
ok( UnlockFile( handle, ~0, ~0, 1, 0 ), "Unlockfile ~0,1 failed\n" );
|
||||
|
||||
limited_LockFile = 0;
|
||||
if (!LockFile( handle, ~0, ~0, 1, 0 ))
|
||||
{
|
||||
limited_LockFile = 1;
|
||||
}
|
||||
|
||||
limited_UnLockFile || ok( UnlockFile( handle, ~0, ~0, 1, 0 ), "Unlockfile ~0,1 failed\n" );
|
||||
|
||||
/* zero-byte lock */
|
||||
ok( LockFile( handle, 100, 0, 0, 0 ), "LockFile 100,0 failed\n" );
|
||||
ok( !LockFile( handle, 98, 0, 4, 0 ), "LockFile 98,4 succeeded\n" );
|
||||
limited_LockFile || ok( !LockFile( handle, 98, 0, 4, 0 ), "LockFile 98,4 succeeded\n" );
|
||||
ok( LockFile( handle, 90, 0, 10, 0 ), "LockFile 90,10 failed\n" );
|
||||
ok( LockFile( handle, 100, 0, 10, 0 ), "LockFile 100,10 failed\n" );
|
||||
limited_LockFile || ok( !LockFile( handle, 100, 0, 10, 0 ), "LockFile 100,10 failed\n" );
|
||||
|
||||
ok( UnlockFile( handle, 90, 0, 10, 0 ), "UnlockFile 90,10 failed\n" );
|
||||
ok( UnlockFile( handle, 100, 0, 10, 0 ), "UnlockFile 100,10 failed\n" );
|
||||
!ok( UnlockFile( handle, 100, 0, 10, 0 ), "UnlockFile 100,10 failed\n" );
|
||||
|
||||
ok( UnlockFile( handle, 100, 0, 0, 0 ), "UnlockFile 100,0 failed\n" );
|
||||
|
||||
CloseHandle( handle );
|
||||
DeleteFileA( filename );
|
||||
}
|
||||
|
||||
static inline int is_sharing_compatible( DWORD access1, DWORD sharing1, DWORD access2, DWORD sharing2 )
|
||||
{
|
||||
if (!access1 || !access2) return 1;
|
||||
if ((access1 & GENERIC_READ) && !(sharing2 & FILE_SHARE_READ)) return 0;
|
||||
if ((access1 & GENERIC_WRITE) && !(sharing2 & FILE_SHARE_WRITE)) return 0;
|
||||
if ((access2 & GENERIC_READ) && !(sharing1 & FILE_SHARE_READ)) return 0;
|
||||
if ((access2 & GENERIC_WRITE) && !(sharing1 & FILE_SHARE_WRITE)) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void test_file_sharing(void)
|
||||
{
|
||||
static const DWORD access_modes[4] = { 0, GENERIC_READ, GENERIC_WRITE, GENERIC_READ|GENERIC_WRITE };
|
||||
static const DWORD sharing_modes[4] = { 0, FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE };
|
||||
int a1, s1, a2, s2;
|
||||
int ret;
|
||||
|
||||
/* make sure the file exists */
|
||||
HANDLE h = CreateFileA( filename, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0 );
|
||||
CloseHandle( h );
|
||||
|
||||
for (a1 = 0; a1 < 4; a1++)
|
||||
{
|
||||
for (s1 = 0; s1 < 4; s1++)
|
||||
{
|
||||
HANDLE h = CreateFileA( filename, access_modes[a1], sharing_modes[s1],
|
||||
NULL, OPEN_EXISTING, 0, 0 );
|
||||
if (h == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ok(0,"couldn't create file \"%s\" (err=%ld)\n",filename,GetLastError());
|
||||
return;
|
||||
}
|
||||
for (a2 = 0; a2 < 4; a2++)
|
||||
{
|
||||
for (s2 = 0; s2 < 4; s2++)
|
||||
{
|
||||
HANDLE h2 = CreateFileA( filename, access_modes[a2], sharing_modes[s2],
|
||||
NULL, OPEN_EXISTING, 0, 0 );
|
||||
if (is_sharing_compatible( access_modes[a1], sharing_modes[s1],
|
||||
access_modes[a2], sharing_modes[s2] ))
|
||||
{
|
||||
ret = GetLastError();
|
||||
ok( ERROR_SHARING_VIOLATION == ret || 0 == ret,
|
||||
"Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and\n"
|
||||
" Windows XP GetLastError() = 0, but now it is %d.\n"
|
||||
" indexes = %d, %d, %d, %d\n"
|
||||
" modes =\n %lx/%lx/%lx/%lx\n",
|
||||
ret,
|
||||
a1, s1, a2, s2,
|
||||
access_modes[a1], sharing_modes[s1],
|
||||
access_modes[a2], sharing_modes[s2]
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
ok( h2 == INVALID_HANDLE_VALUE,
|
||||
"open succeeded for modes %lx/%lx/%lx/%lx\n",
|
||||
access_modes[a1], sharing_modes[s1],
|
||||
access_modes[a2], sharing_modes[s2] );
|
||||
if (h2 == INVALID_HANDLE_VALUE)
|
||||
ok( GetLastError() == ERROR_SHARING_VIOLATION,
|
||||
"wrong error code %ld\n", GetLastError() );
|
||||
}
|
||||
if (h2 != INVALID_HANDLE_VALUE) CloseHandle( h2 );
|
||||
}
|
||||
}
|
||||
CloseHandle( h );
|
||||
}
|
||||
}
|
||||
DeleteFileA( filename );
|
||||
}
|
||||
|
||||
static void test_FindFirstFileA()
|
||||
{
|
||||
HANDLE handle;
|
||||
|
@ -948,37 +1098,78 @@ static void test_FindNextFileA()
|
|||
ok ( err == ERROR_NO_MORE_FILES, "GetLastError should return ERROR_NO_MORE_FILES\n");
|
||||
}
|
||||
|
||||
static void test_MapFile()
|
||||
static int test_Mapfile_createtemp(HANDLE *handle)
|
||||
{
|
||||
HANDLE handle, hmap;
|
||||
|
||||
/* be sure to remove stale files */
|
||||
SetFileAttributesA(filename,FILE_ATTRIBUTE_NORMAL);
|
||||
DeleteFile(filename);
|
||||
handle = CreateFile( filename, GENERIC_READ|GENERIC_WRITE, 0, 0,
|
||||
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
|
||||
ok( handle != INVALID_HANDLE_VALUE, "couldn't create test file\n");
|
||||
*handle = CreateFile(filename, GENERIC_READ|GENERIC_WRITE, 0, 0,
|
||||
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if (*handle != INVALID_HANDLE_VALUE) {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void test_MapFile()
|
||||
{
|
||||
HANDLE handle;
|
||||
HANDLE hmap;
|
||||
|
||||
ok(test_Mapfile_createtemp(&handle), "Couldn't create test file.\n");
|
||||
|
||||
hmap = CreateFileMapping( handle, NULL, PAGE_READWRITE, 0, 0x1000, "named_file_map" );
|
||||
ok( hmap != NULL, "mapping should work, I named it!\n" );
|
||||
|
||||
ok( CloseHandle( hmap ), "can't close mapping handle\n");
|
||||
|
||||
/* We have to close file before we try new stuff with mapping again.
|
||||
Else we would always succeed on XP or block descriptors on 95. */
|
||||
hmap = CreateFileMapping( handle, NULL, PAGE_READWRITE, 0, 0, NULL );
|
||||
ok( hmap != NULL, "We should still be able to map!\n" );
|
||||
ok( CloseHandle( hmap ), "can't close mapping handle\n");
|
||||
ok( CloseHandle( handle ), "can't close file handle\n");
|
||||
handle = NULL;
|
||||
|
||||
ok(test_Mapfile_createtemp(&handle), "Couldn't create test file.\n");
|
||||
|
||||
hmap = CreateFileMapping( handle, NULL, PAGE_READWRITE, 0, 0, NULL );
|
||||
ok( hmap == NULL, "Mapping should not work, no name provided.\n" );
|
||||
|
||||
ok( hmap == NULL, "mapped zero size file\n");
|
||||
ok( GetLastError() == ERROR_FILE_INVALID, "not ERROR_FILE_INVALID\n");
|
||||
|
||||
hmap = CreateFileMapping( handle, NULL, PAGE_READWRITE, 0x1000, 0, NULL );
|
||||
ok( hmap == NULL, "mapping should fail\n");
|
||||
/* GetLastError() varies between win9x and WinNT */
|
||||
/* GetLastError() varies between win9x and WinNT and also depends on the filesystem */
|
||||
|
||||
hmap = CreateFileMapping( handle, NULL, PAGE_READWRITE, 0x1000, 0x10000, NULL );
|
||||
ok( hmap == NULL, "mapping should fail\n");
|
||||
/* GetLastError() varies between win9x and WinNT */
|
||||
/* GetLastError() varies between win9x and WinNT and also depends on the filesystem */
|
||||
|
||||
hmap = CreateFileMapping( handle, NULL, PAGE_READWRITE, 0, 0x1000, NULL );
|
||||
ok( hmap != NULL, "mapping should succeed\n");
|
||||
/* On XP you can now map again, on Win 95 you can not. */
|
||||
|
||||
ok( CloseHandle( hmap ), "can't close mapping handle\n");
|
||||
ok( CloseHandle( handle ), "can't close file handle\n");
|
||||
ok( DeleteFileA( filename ), "DeleteFile failed after map\n" );
|
||||
}
|
||||
|
||||
static void test_GetFileType(void)
|
||||
{
|
||||
DWORD type;
|
||||
HANDLE h = CreateFileA( filename, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0 );
|
||||
ok( h != INVALID_HANDLE_VALUE, "open %s failed\n", filename );
|
||||
type = GetFileType(h);
|
||||
ok( type == FILE_TYPE_DISK, "expected type disk got %ld\n", type );
|
||||
CloseHandle( h );
|
||||
h = CreateFileA( "nul", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0 );
|
||||
ok( h != INVALID_HANDLE_VALUE, "open nul failed\n" );
|
||||
type = GetFileType(h);
|
||||
ok( type == FILE_TYPE_CHAR, "expected type char for nul got %ld\n", type );
|
||||
CloseHandle( h );
|
||||
DeleteFileA( filename );
|
||||
}
|
||||
|
||||
START_TEST(file)
|
||||
{
|
||||
test__hread( );
|
||||
|
@ -1001,6 +1192,8 @@ START_TEST(file)
|
|||
test_FindFirstFileA();
|
||||
test_FindNextFileA();
|
||||
test_LockFile();
|
||||
test_file_sharing();
|
||||
test_offset_in_overlapped_structure();
|
||||
test_MapFile();
|
||||
test_GetFileType();
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ void test_message_from_string(void)
|
|||
{
|
||||
CHAR out[0x100] = {0};
|
||||
DWORD r;
|
||||
WCHAR szwTest[] = { 't','e','s','t',0};
|
||||
static const WCHAR szwTest[] = { 't','e','s','t',0};
|
||||
|
||||
/* the basics */
|
||||
r = FormatMessageA(FORMAT_MESSAGE_FROM_STRING, "test", 0,
|
||||
|
|
|
@ -109,6 +109,221 @@
|
|||
#define TEST_TYPE_UNSIGNED(type) \
|
||||
ok((type) -1 > 0, "(" #type ") -1 > 0\n");
|
||||
|
||||
static void test_pack_LPOSVERSIONINFOA(void)
|
||||
{
|
||||
/* LPOSVERSIONINFOA */
|
||||
TEST_TYPE(LPOSVERSIONINFOA, 4, 4);
|
||||
TEST_TYPE_POINTER(LPOSVERSIONINFOA, 148, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPOSVERSIONINFOEXA(void)
|
||||
{
|
||||
/* LPOSVERSIONINFOEXA */
|
||||
TEST_TYPE(LPOSVERSIONINFOEXA, 4, 4);
|
||||
TEST_TYPE_POINTER(LPOSVERSIONINFOEXA, 156, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPOSVERSIONINFOEXW(void)
|
||||
{
|
||||
/* LPOSVERSIONINFOEXW */
|
||||
TEST_TYPE(LPOSVERSIONINFOEXW, 4, 4);
|
||||
TEST_TYPE_POINTER(LPOSVERSIONINFOEXW, 284, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPOSVERSIONINFOW(void)
|
||||
{
|
||||
/* LPOSVERSIONINFOW */
|
||||
TEST_TYPE(LPOSVERSIONINFOW, 4, 4);
|
||||
TEST_TYPE_POINTER(LPOSVERSIONINFOW, 276, 4);
|
||||
}
|
||||
|
||||
static void test_pack_OSVERSIONINFOA(void)
|
||||
{
|
||||
/* OSVERSIONINFOA (pack 4) */
|
||||
TEST_TYPE(OSVERSIONINFOA, 148, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwOSVersionInfoSize, 0, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwMajorVersion, 4, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwMinorVersion, 8, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwBuildNumber, 12, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwPlatformId, 16, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, CHAR[128], szCSDVersion, 20, 128, 1);
|
||||
}
|
||||
|
||||
static void test_pack_OSVERSIONINFOEXA(void)
|
||||
{
|
||||
/* OSVERSIONINFOEXA (pack 4) */
|
||||
TEST_TYPE(OSVERSIONINFOEXA, 156, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwOSVersionInfoSize, 0, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwMajorVersion, 4, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwMinorVersion, 8, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwBuildNumber, 12, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwPlatformId, 16, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, CHAR[128], szCSDVersion, 20, 128, 1);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, WORD, wServicePackMajor, 148, 2, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, WORD, wServicePackMinor, 150, 2, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, WORD, wSuiteMask, 152, 2, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, BYTE, wProductType, 154, 1, 1);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, BYTE, wReserved, 155, 1, 1);
|
||||
}
|
||||
|
||||
static void test_pack_OSVERSIONINFOEXW(void)
|
||||
{
|
||||
/* OSVERSIONINFOEXW (pack 4) */
|
||||
TEST_TYPE(OSVERSIONINFOEXW, 284, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwOSVersionInfoSize, 0, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwMajorVersion, 4, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwMinorVersion, 8, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwBuildNumber, 12, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwPlatformId, 16, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, WCHAR[128], szCSDVersion, 20, 256, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, WORD, wServicePackMajor, 276, 2, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, WORD, wServicePackMinor, 278, 2, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, WORD, wSuiteMask, 280, 2, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, BYTE, wProductType, 282, 1, 1);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, BYTE, wReserved, 283, 1, 1);
|
||||
}
|
||||
|
||||
static void test_pack_OSVERSIONINFOW(void)
|
||||
{
|
||||
/* OSVERSIONINFOW (pack 4) */
|
||||
TEST_TYPE(OSVERSIONINFOW, 276, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwOSVersionInfoSize, 0, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwMajorVersion, 4, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwMinorVersion, 8, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwBuildNumber, 12, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwPlatformId, 16, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, WCHAR[128], szCSDVersion, 20, 256, 2);
|
||||
}
|
||||
|
||||
static void test_pack_POSVERSIONINFOA(void)
|
||||
{
|
||||
/* POSVERSIONINFOA */
|
||||
TEST_TYPE(POSVERSIONINFOA, 4, 4);
|
||||
TEST_TYPE_POINTER(POSVERSIONINFOA, 148, 4);
|
||||
}
|
||||
|
||||
static void test_pack_POSVERSIONINFOEXA(void)
|
||||
{
|
||||
/* POSVERSIONINFOEXA */
|
||||
TEST_TYPE(POSVERSIONINFOEXA, 4, 4);
|
||||
TEST_TYPE_POINTER(POSVERSIONINFOEXA, 156, 4);
|
||||
}
|
||||
|
||||
static void test_pack_POSVERSIONINFOEXW(void)
|
||||
{
|
||||
/* POSVERSIONINFOEXW */
|
||||
TEST_TYPE(POSVERSIONINFOEXW, 4, 4);
|
||||
TEST_TYPE_POINTER(POSVERSIONINFOEXW, 284, 4);
|
||||
}
|
||||
|
||||
static void test_pack_POSVERSIONINFOW(void)
|
||||
{
|
||||
/* POSVERSIONINFOW */
|
||||
TEST_TYPE(POSVERSIONINFOW, 4, 4);
|
||||
TEST_TYPE_POINTER(POSVERSIONINFOW, 276, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPLONG(void)
|
||||
{
|
||||
/* LPLONG */
|
||||
TEST_TYPE(LPLONG, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPVOID(void)
|
||||
{
|
||||
/* LPVOID */
|
||||
TEST_TYPE(LPVOID, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PHKEY(void)
|
||||
{
|
||||
/* PHKEY */
|
||||
TEST_TYPE(PHKEY, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ACTCTXA(void)
|
||||
{
|
||||
/* ACTCTXA (pack 4) */
|
||||
TEST_TYPE(ACTCTXA, 32, 4);
|
||||
TEST_FIELD(ACTCTXA, ULONG, cbSize, 0, 4, 4);
|
||||
TEST_FIELD(ACTCTXA, DWORD, dwFlags, 4, 4, 4);
|
||||
TEST_FIELD(ACTCTXA, LPCSTR, lpSource, 8, 4, 4);
|
||||
TEST_FIELD(ACTCTXA, USHORT, wProcessorArchitecture, 12, 2, 2);
|
||||
TEST_FIELD(ACTCTXA, LANGID, wLangId, 14, 2, 2);
|
||||
TEST_FIELD(ACTCTXA, LPCSTR, lpAssemblyDirectory, 16, 4, 4);
|
||||
TEST_FIELD(ACTCTXA, LPCSTR, lpResourceName, 20, 4, 4);
|
||||
TEST_FIELD(ACTCTXA, LPCSTR, lpApplicationName, 24, 4, 4);
|
||||
TEST_FIELD(ACTCTXA, HMODULE, hModule, 28, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ACTCTXW(void)
|
||||
{
|
||||
/* ACTCTXW (pack 4) */
|
||||
TEST_TYPE(ACTCTXW, 32, 4);
|
||||
TEST_FIELD(ACTCTXW, ULONG, cbSize, 0, 4, 4);
|
||||
TEST_FIELD(ACTCTXW, DWORD, dwFlags, 4, 4, 4);
|
||||
TEST_FIELD(ACTCTXW, LPCWSTR, lpSource, 8, 4, 4);
|
||||
TEST_FIELD(ACTCTXW, USHORT, wProcessorArchitecture, 12, 2, 2);
|
||||
TEST_FIELD(ACTCTXW, LANGID, wLangId, 14, 2, 2);
|
||||
TEST_FIELD(ACTCTXW, LPCWSTR, lpAssemblyDirectory, 16, 4, 4);
|
||||
TEST_FIELD(ACTCTXW, LPCWSTR, lpResourceName, 20, 4, 4);
|
||||
TEST_FIELD(ACTCTXW, LPCWSTR, lpApplicationName, 24, 4, 4);
|
||||
TEST_FIELD(ACTCTXW, HMODULE, hModule, 28, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ACTCTX_SECTION_KEYED_DATA(void)
|
||||
{
|
||||
/* ACTCTX_SECTION_KEYED_DATA (pack 4) */
|
||||
TEST_TYPE(ACTCTX_SECTION_KEYED_DATA, 64, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, ULONG, cbSize, 0, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, ULONG, ulDataFormatVersion, 4, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, PVOID, lpData, 8, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, ULONG, ulLength, 12, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, PVOID, lpSectionGlobalData, 16, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, ULONG, ulSectionGlobalDataLength, 20, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, PVOID, lpSectionBase, 24, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, ULONG, ulSectionTotalLength, 28, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, HANDLE, hActCtx, 32, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, ULONG, ulAssemblyRosterIndex, 36, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, ULONG, ulFlags, 40, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA, ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, AssemblyMetadata, 44, 20, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ACTCTX_SECTION_KEYED_DATA_2600(void)
|
||||
{
|
||||
/* ACTCTX_SECTION_KEYED_DATA_2600 (pack 4) */
|
||||
TEST_TYPE(ACTCTX_SECTION_KEYED_DATA_2600, 40, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, ULONG, cbSize, 0, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, ULONG, ulDataFormatVersion, 4, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, PVOID, lpData, 8, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, ULONG, ulLength, 12, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, PVOID, lpSectionGlobalData, 16, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, ULONG, ulSectionGlobalDataLength, 20, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, PVOID, lpSectionBase, 24, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, ULONG, ulSectionTotalLength, 28, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, HANDLE, hActCtx, 32, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_2600, ULONG, ulAssemblyRosterIndex, 36, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA(void)
|
||||
{
|
||||
/* ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA (pack 4) */
|
||||
TEST_TYPE(ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, 20, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, PVOID, lpInformation, 0, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, PVOID, lpSectionBase, 4, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, ULONG, ulSectionLength, 8, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, PVOID, lpSectionGlobalDataBase, 12, 4, 4);
|
||||
TEST_FIELD(ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, ULONG, ulSectionGlobalDataLength, 16, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ACTIVATION_CONTEXT_BASIC_INFORMATION(void)
|
||||
{
|
||||
/* ACTIVATION_CONTEXT_BASIC_INFORMATION (pack 4) */
|
||||
TEST_TYPE(ACTIVATION_CONTEXT_BASIC_INFORMATION, 8, 4);
|
||||
TEST_FIELD(ACTIVATION_CONTEXT_BASIC_INFORMATION, HANDLE, hActCtx, 0, 4, 4);
|
||||
TEST_FIELD(ACTIVATION_CONTEXT_BASIC_INFORMATION, DWORD, dwFlags, 4, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_BY_HANDLE_FILE_INFORMATION(void)
|
||||
{
|
||||
/* BY_HANDLE_FILE_INFORMATION (pack 4) */
|
||||
|
@ -125,14 +340,6 @@ static void test_pack_BY_HANDLE_FILE_INFORMATION(void)
|
|||
TEST_FIELD(BY_HANDLE_FILE_INFORMATION, DWORD, nFileIndexLow, 48, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_COMMCONFIG(void)
|
||||
{
|
||||
/* COMMCONFIG (pack 4) */
|
||||
TEST_FIELD(COMMCONFIG, DWORD, dwSize, 0, 4, 4);
|
||||
TEST_FIELD(COMMCONFIG, WORD, wVersion, 4, 2, 2);
|
||||
TEST_FIELD(COMMCONFIG, WORD, wReserved, 6, 2, 2);
|
||||
}
|
||||
|
||||
static void test_pack_COMMPROP(void)
|
||||
{
|
||||
/* COMMPROP (pack 4) */
|
||||
|
@ -168,14 +375,6 @@ static void test_pack_COMMTIMEOUTS(void)
|
|||
TEST_FIELD(COMMTIMEOUTS, DWORD, WriteTotalTimeoutConstant, 16, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_COMSTAT(void)
|
||||
{
|
||||
/* COMSTAT (pack 4) */
|
||||
TEST_TYPE(COMSTAT, 12, 4);
|
||||
TEST_FIELD(COMSTAT, DWORD, cbInQue, 4, 4, 4);
|
||||
TEST_FIELD(COMSTAT, DWORD, cbOutQue, 8, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_CREATE_PROCESS_DEBUG_INFO(void)
|
||||
{
|
||||
/* CREATE_PROCESS_DEBUG_INFO (pack 4) */
|
||||
|
@ -213,19 +412,40 @@ static void test_pack_CRITICAL_SECTION_DEBUG(void)
|
|||
TEST_TYPE(CRITICAL_SECTION_DEBUG, 32, 4);
|
||||
}
|
||||
|
||||
static void test_pack_DCB(void)
|
||||
static void test_pack_ENUMRESLANGPROCA(void)
|
||||
{
|
||||
/* DCB (pack 4) */
|
||||
TEST_FIELD(DCB, DWORD, DCBlength, 0, 4, 4);
|
||||
TEST_FIELD(DCB, DWORD, BaudRate, 4, 4, 4);
|
||||
/* ENUMRESLANGPROCA */
|
||||
TEST_TYPE(ENUMRESLANGPROCA, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_DEBUG_EVENT(void)
|
||||
static void test_pack_ENUMRESLANGPROCW(void)
|
||||
{
|
||||
/* DEBUG_EVENT (pack 4) */
|
||||
TEST_FIELD(DEBUG_EVENT, DWORD, dwDebugEventCode, 0, 4, 4);
|
||||
TEST_FIELD(DEBUG_EVENT, DWORD, dwProcessId, 4, 4, 4);
|
||||
TEST_FIELD(DEBUG_EVENT, DWORD, dwThreadId, 8, 4, 4);
|
||||
/* ENUMRESLANGPROCW */
|
||||
TEST_TYPE(ENUMRESLANGPROCW, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ENUMRESNAMEPROCA(void)
|
||||
{
|
||||
/* ENUMRESNAMEPROCA */
|
||||
TEST_TYPE(ENUMRESNAMEPROCA, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ENUMRESNAMEPROCW(void)
|
||||
{
|
||||
/* ENUMRESNAMEPROCW */
|
||||
TEST_TYPE(ENUMRESNAMEPROCW, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ENUMRESTYPEPROCA(void)
|
||||
{
|
||||
/* ENUMRESTYPEPROCA */
|
||||
TEST_TYPE(ENUMRESTYPEPROCA, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_ENUMRESTYPEPROCW(void)
|
||||
{
|
||||
/* ENUMRESTYPEPROCW */
|
||||
TEST_TYPE(ENUMRESTYPEPROCW, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_EXCEPTION_DEBUG_INFO(void)
|
||||
|
@ -268,13 +488,6 @@ static void test_pack_HW_PROFILE_INFOW(void)
|
|||
TEST_FIELD(HW_PROFILE_INFOW, WCHAR[MAX_PROFILE_LEN], szHwProfileName, 82, 160, 2);
|
||||
}
|
||||
|
||||
static void test_pack_LDT_ENTRY(void)
|
||||
{
|
||||
/* LDT_ENTRY (pack 4) */
|
||||
TEST_FIELD(LDT_ENTRY, WORD, LimitLow, 0, 2, 2);
|
||||
TEST_FIELD(LDT_ENTRY, WORD, BaseLow, 2, 2, 2);
|
||||
}
|
||||
|
||||
static void test_pack_LOAD_DLL_DEBUG_INFO(void)
|
||||
{
|
||||
/* LOAD_DLL_DEBUG_INFO (pack 4) */
|
||||
|
@ -294,12 +507,6 @@ static void test_pack_LPBY_HANDLE_FILE_INFORMATION(void)
|
|||
TEST_TYPE_POINTER(LPBY_HANDLE_FILE_INFORMATION, 52, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPCOMMCONFIG(void)
|
||||
{
|
||||
/* LPCOMMCONFIG */
|
||||
TEST_TYPE(LPCOMMCONFIG, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPCOMMPROP(void)
|
||||
{
|
||||
/* LPCOMMPROP */
|
||||
|
@ -314,19 +521,6 @@ static void test_pack_LPCOMMTIMEOUTS(void)
|
|||
TEST_TYPE_POINTER(LPCOMMTIMEOUTS, 20, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPCOMSTAT(void)
|
||||
{
|
||||
/* LPCOMSTAT */
|
||||
TEST_TYPE(LPCOMSTAT, 4, 4);
|
||||
TEST_TYPE_POINTER(LPCOMSTAT, 12, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPCONTEXT(void)
|
||||
{
|
||||
/* LPCONTEXT */
|
||||
TEST_TYPE(LPCONTEXT, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPCRITICAL_SECTION(void)
|
||||
{
|
||||
/* LPCRITICAL_SECTION */
|
||||
|
@ -339,18 +533,6 @@ static void test_pack_LPCRITICAL_SECTION_DEBUG(void)
|
|||
TEST_TYPE(LPCRITICAL_SECTION_DEBUG, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPDCB(void)
|
||||
{
|
||||
/* LPDCB */
|
||||
TEST_TYPE(LPDCB, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPDEBUG_EVENT(void)
|
||||
{
|
||||
/* LPDEBUG_EVENT */
|
||||
TEST_TYPE(LPDEBUG_EVENT, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPEXCEPTION_POINTERS(void)
|
||||
{
|
||||
/* LPEXCEPTION_POINTERS */
|
||||
|
@ -383,12 +565,6 @@ static void test_pack_LPHW_PROFILE_INFOW(void)
|
|||
TEST_TYPE_POINTER(LPHW_PROFILE_INFOW, 244, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPLDT_ENTRY(void)
|
||||
{
|
||||
/* LPLDT_ENTRY */
|
||||
TEST_TYPE(LPLDT_ENTRY, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPMEMORYSTATUS(void)
|
||||
{
|
||||
/* LPMEMORYSTATUS */
|
||||
|
@ -403,32 +579,6 @@ static void test_pack_LPOFSTRUCT(void)
|
|||
TEST_TYPE_POINTER(LPOFSTRUCT, 136, 2);
|
||||
}
|
||||
|
||||
static void test_pack_LPOSVERSIONINFOA(void)
|
||||
{
|
||||
/* LPOSVERSIONINFOA */
|
||||
TEST_TYPE(LPOSVERSIONINFOA, 4, 4);
|
||||
TEST_TYPE_POINTER(LPOSVERSIONINFOA, 148, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPOSVERSIONINFOEXA(void)
|
||||
{
|
||||
/* LPOSVERSIONINFOEXA */
|
||||
TEST_TYPE(LPOSVERSIONINFOEXA, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPOSVERSIONINFOEXW(void)
|
||||
{
|
||||
/* LPOSVERSIONINFOEXW */
|
||||
TEST_TYPE(LPOSVERSIONINFOEXW, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPOSVERSIONINFOW(void)
|
||||
{
|
||||
/* LPOSVERSIONINFOW */
|
||||
TEST_TYPE(LPOSVERSIONINFOW, 4, 4);
|
||||
TEST_TYPE_POINTER(LPOSVERSIONINFOW, 276, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPOVERLAPPED(void)
|
||||
{
|
||||
/* LPOVERLAPPED */
|
||||
|
@ -442,12 +592,6 @@ static void test_pack_LPOVERLAPPED_COMPLETION_ROUTINE(void)
|
|||
TEST_TYPE(LPOVERLAPPED_COMPLETION_ROUTINE, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPPROCESS_HEAP_ENTRY(void)
|
||||
{
|
||||
/* LPPROCESS_HEAP_ENTRY */
|
||||
TEST_TYPE(LPPROCESS_HEAP_ENTRY, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPPROCESS_INFORMATION(void)
|
||||
{
|
||||
/* LPPROCESS_INFORMATION */
|
||||
|
@ -472,6 +616,7 @@ static void test_pack_LPSTARTUPINFOA(void)
|
|||
{
|
||||
/* LPSTARTUPINFOA */
|
||||
TEST_TYPE(LPSTARTUPINFOA, 4, 4);
|
||||
TEST_TYPE_POINTER(LPSTARTUPINFOA, 68, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPSTARTUPINFOW(void)
|
||||
|
@ -488,12 +633,6 @@ static void test_pack_LPSYSTEMTIME(void)
|
|||
TEST_TYPE_POINTER(LPSYSTEMTIME, 16, 2);
|
||||
}
|
||||
|
||||
static void test_pack_LPSYSTEM_INFO(void)
|
||||
{
|
||||
/* LPSYSTEM_INFO */
|
||||
TEST_TYPE(LPSYSTEM_INFO, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPSYSTEM_POWER_STATUS(void)
|
||||
{
|
||||
/* LPSYSTEM_POWER_STATUS */
|
||||
|
@ -535,13 +674,6 @@ static void test_pack_LPWIN32_FIND_DATAW(void)
|
|||
TEST_TYPE_POINTER(LPWIN32_FIND_DATAW, 592, 4);
|
||||
}
|
||||
|
||||
static void test_pack_LPWIN32_STREAM_ID(void)
|
||||
{
|
||||
/* LPWIN32_STREAM_ID */
|
||||
TEST_TYPE(LPWIN32_STREAM_ID, 4, 4);
|
||||
TEST_TYPE_POINTER(LPWIN32_STREAM_ID, 24, 4);
|
||||
}
|
||||
|
||||
static void test_pack_MEMORYSTATUS(void)
|
||||
{
|
||||
/* MEMORYSTATUS (pack 4) */
|
||||
|
@ -568,59 +700,13 @@ static void test_pack_OFSTRUCT(void)
|
|||
TEST_FIELD(OFSTRUCT, BYTE[OFS_MAXPATHNAME], szPathName, 8, 128, 1);
|
||||
}
|
||||
|
||||
static void test_pack_OSVERSIONINFOA(void)
|
||||
{
|
||||
/* OSVERSIONINFOA (pack 4) */
|
||||
TEST_TYPE(OSVERSIONINFOA, 148, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwOSVersionInfoSize, 0, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwMajorVersion, 4, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwMinorVersion, 8, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwBuildNumber, 12, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, DWORD, dwPlatformId, 16, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOA, CHAR[128], szCSDVersion, 20, 128, 1);
|
||||
}
|
||||
|
||||
static void test_pack_OSVERSIONINFOEXA(void)
|
||||
{
|
||||
/* OSVERSIONINFOEXA (pack 4) */
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwOSVersionInfoSize, 0, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwMajorVersion, 4, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwMinorVersion, 8, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwBuildNumber, 12, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, DWORD, dwPlatformId, 16, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, CHAR[128], szCSDVersion, 20, 128, 1);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, WORD, wServicePackMajor, 148, 2, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXA, WORD, wServicePackMinor, 150, 2, 2);
|
||||
}
|
||||
|
||||
static void test_pack_OSVERSIONINFOEXW(void)
|
||||
{
|
||||
/* OSVERSIONINFOEXW (pack 4) */
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwOSVersionInfoSize, 0, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwMajorVersion, 4, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwMinorVersion, 8, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwBuildNumber, 12, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, DWORD, dwPlatformId, 16, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, WCHAR[128], szCSDVersion, 20, 256, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, WORD, wServicePackMajor, 276, 2, 2);
|
||||
TEST_FIELD(OSVERSIONINFOEXW, WORD, wServicePackMinor, 278, 2, 2);
|
||||
}
|
||||
|
||||
static void test_pack_OSVERSIONINFOW(void)
|
||||
{
|
||||
/* OSVERSIONINFOW (pack 4) */
|
||||
TEST_TYPE(OSVERSIONINFOW, 276, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwOSVersionInfoSize, 0, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwMajorVersion, 4, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwMinorVersion, 8, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwBuildNumber, 12, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, DWORD, dwPlatformId, 16, 4, 4);
|
||||
TEST_FIELD(OSVERSIONINFOW, WCHAR[128], szCSDVersion, 20, 256, 2);
|
||||
}
|
||||
|
||||
static void test_pack_OUTPUT_DEBUG_STRING_INFO(void)
|
||||
{
|
||||
/* OUTPUT_DEBUG_STRING_INFO (pack 4) */
|
||||
TEST_TYPE(OUTPUT_DEBUG_STRING_INFO, 8, 4);
|
||||
TEST_FIELD(OUTPUT_DEBUG_STRING_INFO, LPSTR, lpDebugStringData, 0, 4, 4);
|
||||
TEST_FIELD(OUTPUT_DEBUG_STRING_INFO, WORD, fUnicode, 4, 2, 2);
|
||||
TEST_FIELD(OUTPUT_DEBUG_STRING_INFO, WORD, nDebugStringLength, 6, 2, 2);
|
||||
}
|
||||
|
||||
static void test_pack_OVERLAPPED(void)
|
||||
|
@ -634,6 +720,48 @@ static void test_pack_OVERLAPPED(void)
|
|||
TEST_FIELD(OVERLAPPED, HANDLE, hEvent, 16, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PACTCTXA(void)
|
||||
{
|
||||
/* PACTCTXA */
|
||||
TEST_TYPE(PACTCTXA, 4, 4);
|
||||
TEST_TYPE_POINTER(PACTCTXA, 32, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PACTCTXW(void)
|
||||
{
|
||||
/* PACTCTXW */
|
||||
TEST_TYPE(PACTCTXW, 4, 4);
|
||||
TEST_TYPE_POINTER(PACTCTXW, 32, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PACTCTX_SECTION_KEYED_DATA(void)
|
||||
{
|
||||
/* PACTCTX_SECTION_KEYED_DATA */
|
||||
TEST_TYPE(PACTCTX_SECTION_KEYED_DATA, 4, 4);
|
||||
TEST_TYPE_POINTER(PACTCTX_SECTION_KEYED_DATA, 64, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PACTCTX_SECTION_KEYED_DATA_2600(void)
|
||||
{
|
||||
/* PACTCTX_SECTION_KEYED_DATA_2600 */
|
||||
TEST_TYPE(PACTCTX_SECTION_KEYED_DATA_2600, 4, 4);
|
||||
TEST_TYPE_POINTER(PACTCTX_SECTION_KEYED_DATA_2600, 40, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA(void)
|
||||
{
|
||||
/* PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA */
|
||||
TEST_TYPE(PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, 4, 4);
|
||||
TEST_TYPE_POINTER(PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, 20, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PACTIVATION_CONTEXT_BASIC_INFORMATION(void)
|
||||
{
|
||||
/* PACTIVATION_CONTEXT_BASIC_INFORMATION */
|
||||
TEST_TYPE(PACTIVATION_CONTEXT_BASIC_INFORMATION, 4, 4);
|
||||
TEST_TYPE_POINTER(PACTIVATION_CONTEXT_BASIC_INFORMATION, 8, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PAPCFUNC(void)
|
||||
{
|
||||
/* PAPCFUNC */
|
||||
|
@ -647,6 +775,41 @@ static void test_pack_PBY_HANDLE_FILE_INFORMATION(void)
|
|||
TEST_TYPE_POINTER(PBY_HANDLE_FILE_INFORMATION, 52, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PCACTCTXA(void)
|
||||
{
|
||||
/* PCACTCTXA */
|
||||
TEST_TYPE(PCACTCTXA, 4, 4);
|
||||
TEST_TYPE_POINTER(PCACTCTXA, 32, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PCACTCTXW(void)
|
||||
{
|
||||
/* PCACTCTXW */
|
||||
TEST_TYPE(PCACTCTXW, 4, 4);
|
||||
TEST_TYPE_POINTER(PCACTCTXW, 32, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PCACTCTX_SECTION_KEYED_DATA(void)
|
||||
{
|
||||
/* PCACTCTX_SECTION_KEYED_DATA */
|
||||
TEST_TYPE(PCACTCTX_SECTION_KEYED_DATA, 4, 4);
|
||||
TEST_TYPE_POINTER(PCACTCTX_SECTION_KEYED_DATA, 64, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PCACTCTX_SECTION_KEYED_DATA_2600(void)
|
||||
{
|
||||
/* PCACTCTX_SECTION_KEYED_DATA_2600 */
|
||||
TEST_TYPE(PCACTCTX_SECTION_KEYED_DATA_2600, 4, 4);
|
||||
TEST_TYPE_POINTER(PCACTCTX_SECTION_KEYED_DATA_2600, 40, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA(void)
|
||||
{
|
||||
/* PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA */
|
||||
TEST_TYPE(PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, 4, 4);
|
||||
TEST_TYPE_POINTER(PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, 20, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PCRITICAL_SECTION(void)
|
||||
{
|
||||
/* PCRITICAL_SECTION */
|
||||
|
@ -672,38 +835,6 @@ static void test_pack_POFSTRUCT(void)
|
|||
TEST_TYPE_POINTER(POFSTRUCT, 136, 2);
|
||||
}
|
||||
|
||||
static void test_pack_POSVERSIONINFOA(void)
|
||||
{
|
||||
/* POSVERSIONINFOA */
|
||||
TEST_TYPE(POSVERSIONINFOA, 4, 4);
|
||||
TEST_TYPE_POINTER(POSVERSIONINFOA, 148, 4);
|
||||
}
|
||||
|
||||
static void test_pack_POSVERSIONINFOEXA(void)
|
||||
{
|
||||
/* POSVERSIONINFOEXA */
|
||||
TEST_TYPE(POSVERSIONINFOEXA, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_POSVERSIONINFOEXW(void)
|
||||
{
|
||||
/* POSVERSIONINFOEXW */
|
||||
TEST_TYPE(POSVERSIONINFOEXW, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_POSVERSIONINFOW(void)
|
||||
{
|
||||
/* POSVERSIONINFOW */
|
||||
TEST_TYPE(POSVERSIONINFOW, 4, 4);
|
||||
TEST_TYPE_POINTER(POSVERSIONINFOW, 276, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PPROCESS_HEAP_ENTRY(void)
|
||||
{
|
||||
/* PPROCESS_HEAP_ENTRY */
|
||||
TEST_TYPE(PPROCESS_HEAP_ENTRY, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PPROCESS_INFORMATION(void)
|
||||
{
|
||||
/* PPROCESS_INFORMATION */
|
||||
|
@ -711,14 +842,10 @@ static void test_pack_PPROCESS_INFORMATION(void)
|
|||
TEST_TYPE_POINTER(PPROCESS_INFORMATION, 16, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PROCESS_HEAP_ENTRY(void)
|
||||
static void test_pack_PQUERYACTCTXW_FUNC(void)
|
||||
{
|
||||
/* PROCESS_HEAP_ENTRY (pack 4) */
|
||||
TEST_FIELD(PROCESS_HEAP_ENTRY, LPVOID, lpData, 0, 4, 4);
|
||||
TEST_FIELD(PROCESS_HEAP_ENTRY, DWORD, cbData, 4, 4, 4);
|
||||
TEST_FIELD(PROCESS_HEAP_ENTRY, BYTE, cbOverhead, 8, 1, 1);
|
||||
TEST_FIELD(PROCESS_HEAP_ENTRY, BYTE, iRegionIndex, 9, 1, 1);
|
||||
TEST_FIELD(PROCESS_HEAP_ENTRY, WORD, wFlags, 10, 2, 2);
|
||||
/* PQUERYACTCTXW_FUNC */
|
||||
TEST_TYPE(PQUERYACTCTXW_FUNC, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_PROCESS_INFORMATION(void)
|
||||
|
@ -792,7 +919,25 @@ static void test_pack_SECURITY_ATTRIBUTES(void)
|
|||
static void test_pack_STARTUPINFOA(void)
|
||||
{
|
||||
/* STARTUPINFOA (pack 4) */
|
||||
TEST_TYPE(STARTUPINFOA, 68, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, cb, 0, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, LPSTR, lpReserved, 4, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, LPSTR, lpDesktop, 8, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, LPSTR, lpTitle, 12, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, dwX, 16, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, dwY, 20, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, dwXSize, 24, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, dwYSize, 28, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, dwXCountChars, 32, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, dwYCountChars, 36, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, dwFillAttribute, 40, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, DWORD, dwFlags, 44, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, WORD, wShowWindow, 48, 2, 2);
|
||||
TEST_FIELD(STARTUPINFOA, WORD, cbReserved2, 50, 2, 2);
|
||||
TEST_FIELD(STARTUPINFOA, BYTE *, lpReserved2, 52, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, HANDLE, hStdInput, 56, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, HANDLE, hStdOutput, 60, 4, 4);
|
||||
TEST_FIELD(STARTUPINFOA, HANDLE, hStdError, 64, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_STARTUPINFOW(void)
|
||||
|
@ -819,6 +964,14 @@ static void test_pack_STARTUPINFOW(void)
|
|||
TEST_FIELD(STARTUPINFOW, HANDLE, hStdError, 64, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_SYSLEVEL(void)
|
||||
{
|
||||
/* SYSLEVEL (pack 4) */
|
||||
TEST_TYPE(SYSLEVEL, 28, 4);
|
||||
TEST_FIELD(SYSLEVEL, CRITICAL_SECTION, crst, 0, 24, 4);
|
||||
TEST_FIELD(SYSLEVEL, INT, level, 24, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_SYSTEMTIME(void)
|
||||
{
|
||||
/* SYSTEMTIME (pack 4) */
|
||||
|
@ -865,6 +1018,12 @@ static void test_pack_UNLOAD_DLL_DEBUG_INFO(void)
|
|||
TEST_FIELD(UNLOAD_DLL_DEBUG_INFO, LPVOID, lpBaseOfDll, 0, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_WAITORTIMERCALLBACK(void)
|
||||
{
|
||||
/* WAITORTIMERCALLBACK */
|
||||
TEST_TYPE(WAITORTIMERCALLBACK, 4, 4);
|
||||
}
|
||||
|
||||
static void test_pack_WIN32_FILE_ATTRIBUTE_DATA(void)
|
||||
{
|
||||
/* WIN32_FILE_ATTRIBUTE_DATA (pack 4) */
|
||||
|
@ -911,40 +1070,42 @@ static void test_pack_WIN32_FIND_DATAW(void)
|
|||
|
||||
static void test_pack(void)
|
||||
{
|
||||
test_pack_ACTCTXA();
|
||||
test_pack_ACTCTXW();
|
||||
test_pack_ACTCTX_SECTION_KEYED_DATA();
|
||||
test_pack_ACTCTX_SECTION_KEYED_DATA_2600();
|
||||
test_pack_ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA();
|
||||
test_pack_ACTIVATION_CONTEXT_BASIC_INFORMATION();
|
||||
test_pack_BY_HANDLE_FILE_INFORMATION();
|
||||
test_pack_COMMCONFIG();
|
||||
test_pack_COMMPROP();
|
||||
test_pack_COMMTIMEOUTS();
|
||||
test_pack_COMSTAT();
|
||||
test_pack_CREATE_PROCESS_DEBUG_INFO();
|
||||
test_pack_CREATE_THREAD_DEBUG_INFO();
|
||||
test_pack_CRITICAL_SECTION();
|
||||
test_pack_CRITICAL_SECTION_DEBUG();
|
||||
test_pack_DCB();
|
||||
test_pack_DEBUG_EVENT();
|
||||
test_pack_ENUMRESLANGPROCA();
|
||||
test_pack_ENUMRESLANGPROCW();
|
||||
test_pack_ENUMRESNAMEPROCA();
|
||||
test_pack_ENUMRESNAMEPROCW();
|
||||
test_pack_ENUMRESTYPEPROCA();
|
||||
test_pack_ENUMRESTYPEPROCW();
|
||||
test_pack_EXCEPTION_DEBUG_INFO();
|
||||
test_pack_EXIT_PROCESS_DEBUG_INFO();
|
||||
test_pack_EXIT_THREAD_DEBUG_INFO();
|
||||
test_pack_HW_PROFILE_INFOA();
|
||||
test_pack_HW_PROFILE_INFOW();
|
||||
test_pack_LDT_ENTRY();
|
||||
test_pack_LOAD_DLL_DEBUG_INFO();
|
||||
test_pack_LPBY_HANDLE_FILE_INFORMATION();
|
||||
test_pack_LPCOMMCONFIG();
|
||||
test_pack_LPCOMMPROP();
|
||||
test_pack_LPCOMMTIMEOUTS();
|
||||
test_pack_LPCOMSTAT();
|
||||
test_pack_LPCONTEXT();
|
||||
test_pack_LPCRITICAL_SECTION();
|
||||
test_pack_LPCRITICAL_SECTION_DEBUG();
|
||||
test_pack_LPDCB();
|
||||
test_pack_LPDEBUG_EVENT();
|
||||
test_pack_LPEXCEPTION_POINTERS();
|
||||
test_pack_LPEXCEPTION_RECORD();
|
||||
test_pack_LPFIBER_START_ROUTINE();
|
||||
test_pack_LPHW_PROFILE_INFOA();
|
||||
test_pack_LPHW_PROFILE_INFOW();
|
||||
test_pack_LPLDT_ENTRY();
|
||||
test_pack_LPLONG();
|
||||
test_pack_LPMEMORYSTATUS();
|
||||
test_pack_LPOFSTRUCT();
|
||||
test_pack_LPOSVERSIONINFOA();
|
||||
|
@ -953,21 +1114,19 @@ static void test_pack(void)
|
|||
test_pack_LPOSVERSIONINFOW();
|
||||
test_pack_LPOVERLAPPED();
|
||||
test_pack_LPOVERLAPPED_COMPLETION_ROUTINE();
|
||||
test_pack_LPPROCESS_HEAP_ENTRY();
|
||||
test_pack_LPPROCESS_INFORMATION();
|
||||
test_pack_LPPROGRESS_ROUTINE();
|
||||
test_pack_LPSECURITY_ATTRIBUTES();
|
||||
test_pack_LPSTARTUPINFOA();
|
||||
test_pack_LPSTARTUPINFOW();
|
||||
test_pack_LPSYSTEMTIME();
|
||||
test_pack_LPSYSTEM_INFO();
|
||||
test_pack_LPSYSTEM_POWER_STATUS();
|
||||
test_pack_LPTHREAD_START_ROUTINE();
|
||||
test_pack_LPTIME_ZONE_INFORMATION();
|
||||
test_pack_LPVOID();
|
||||
test_pack_LPWIN32_FILE_ATTRIBUTE_DATA();
|
||||
test_pack_LPWIN32_FIND_DATAA();
|
||||
test_pack_LPWIN32_FIND_DATAW();
|
||||
test_pack_LPWIN32_STREAM_ID();
|
||||
test_pack_MEMORYSTATUS();
|
||||
test_pack_OFSTRUCT();
|
||||
test_pack_OSVERSIONINFOA();
|
||||
|
@ -976,19 +1135,30 @@ static void test_pack(void)
|
|||
test_pack_OSVERSIONINFOW();
|
||||
test_pack_OUTPUT_DEBUG_STRING_INFO();
|
||||
test_pack_OVERLAPPED();
|
||||
test_pack_PACTCTXA();
|
||||
test_pack_PACTCTXW();
|
||||
test_pack_PACTCTX_SECTION_KEYED_DATA();
|
||||
test_pack_PACTCTX_SECTION_KEYED_DATA_2600();
|
||||
test_pack_PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA();
|
||||
test_pack_PACTIVATION_CONTEXT_BASIC_INFORMATION();
|
||||
test_pack_PAPCFUNC();
|
||||
test_pack_PBY_HANDLE_FILE_INFORMATION();
|
||||
test_pack_PCACTCTXA();
|
||||
test_pack_PCACTCTXW();
|
||||
test_pack_PCACTCTX_SECTION_KEYED_DATA();
|
||||
test_pack_PCACTCTX_SECTION_KEYED_DATA_2600();
|
||||
test_pack_PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA();
|
||||
test_pack_PCRITICAL_SECTION();
|
||||
test_pack_PCRITICAL_SECTION_DEBUG();
|
||||
test_pack_PFIBER_START_ROUTINE();
|
||||
test_pack_PHKEY();
|
||||
test_pack_POFSTRUCT();
|
||||
test_pack_POSVERSIONINFOA();
|
||||
test_pack_POSVERSIONINFOEXA();
|
||||
test_pack_POSVERSIONINFOEXW();
|
||||
test_pack_POSVERSIONINFOW();
|
||||
test_pack_PPROCESS_HEAP_ENTRY();
|
||||
test_pack_PPROCESS_INFORMATION();
|
||||
test_pack_PROCESS_HEAP_ENTRY();
|
||||
test_pack_PQUERYACTCTXW_FUNC();
|
||||
test_pack_PROCESS_INFORMATION();
|
||||
test_pack_PSECURITY_ATTRIBUTES();
|
||||
test_pack_PSYSTEMTIME();
|
||||
|
@ -1000,10 +1170,12 @@ static void test_pack(void)
|
|||
test_pack_SECURITY_ATTRIBUTES();
|
||||
test_pack_STARTUPINFOA();
|
||||
test_pack_STARTUPINFOW();
|
||||
test_pack_SYSLEVEL();
|
||||
test_pack_SYSTEMTIME();
|
||||
test_pack_SYSTEM_POWER_STATUS();
|
||||
test_pack_TIME_ZONE_INFORMATION();
|
||||
test_pack_UNLOAD_DLL_DEBUG_INFO();
|
||||
test_pack_WAITORTIMERCALLBACK();
|
||||
test_pack_WIN32_FILE_ATTRIBUTE_DATA();
|
||||
test_pack_WIN32_FIND_DATAA();
|
||||
test_pack_WIN32_FIND_DATAW();
|
||||
|
|
|
@ -35,13 +35,6 @@
|
|||
#include "winerror.h"
|
||||
#include "winnls.h"
|
||||
|
||||
#ifndef DATE_YEARMONTH
|
||||
#define DATE_YEARMONTH 8
|
||||
#endif
|
||||
#ifndef MAP_EXPAND_LIGATURES
|
||||
#define MAP_EXPAND_LIGATURES 0x2000
|
||||
#endif
|
||||
|
||||
static inline unsigned int strlenW( const WCHAR *str )
|
||||
{
|
||||
const WCHAR *s = str;
|
||||
|
@ -802,8 +795,17 @@ static void test_CompareStringA()
|
|||
ok(!ret, "CompareStringA must fail with invalid flag\n");
|
||||
|
||||
ret = lstrcmpA("", "");
|
||||
ok (!ret, "lstrcmpA(\"\", \"\") should return 0, got %d\n", ret);
|
||||
ok (ret == 0, "lstrcmpA(\"\", \"\") should return 0, got %d\n", ret);
|
||||
|
||||
ret = lstrcmpA(NULL, NULL);
|
||||
ok (ret == 0, "lstrcmpA(NULL, NULL) should return 0, got %d\n", ret);
|
||||
|
||||
ret = lstrcmpA("", NULL);
|
||||
ok (ret == 1, "lstrcmpA(\"\", NULL) should return 1, got %d\n", ret);
|
||||
|
||||
ret = lstrcmpA(NULL, "");
|
||||
ok (ret == -1, "lstrcmpA(NULL, \"\") should return -1, got %d\n", ret);
|
||||
|
||||
ret = CompareStringA(LOCALE_SYSTEM_DEFAULT,0,"EndDialog",-1,"_Property",-1);
|
||||
ok( ret == 3, "EndDialog vs _Property ... expected 3, got %d\n", ret);
|
||||
|
||||
|
|
|
@ -35,9 +35,9 @@
|
|||
|
||||
#endif
|
||||
|
||||
const char szmspath[] = "\\\\.\\mailslot\\wine_mailslot_test";
|
||||
static const char szmspath[] = "\\\\.\\mailslot\\wine_mailslot_test";
|
||||
|
||||
int mailslot_test()
|
||||
static int mailslot_test()
|
||||
{
|
||||
HANDLE hSlot, hSlot2, hWriter, hWriter2;
|
||||
unsigned char buffer[16];
|
||||
|
|
|
@ -48,7 +48,6 @@
|
|||
*/
|
||||
static const CHAR funny_chars[]="!@#$%^&*()=+{}[],?'`";
|
||||
static const CHAR is_char_ok[] ="11111110111111111011";
|
||||
static const CHAR wine_todo[] ="00000000000000000000";
|
||||
|
||||
static DWORD (WINAPI *pGetLongPathNameA)(LPCSTR,LPSTR,DWORD);
|
||||
|
||||
|
@ -228,44 +227,24 @@ static void test_LongtoShortA(CHAR *teststr,CHAR *goodstr,
|
|||
Get(Short|Long)PathNameA should never pass, but GetFullPathNameA
|
||||
should.
|
||||
*/
|
||||
static void test_FunnyChars(CHAR *curdir,CHAR *filename,
|
||||
INT valid,INT todo,CHAR *errstr) {
|
||||
static void test_FunnyChars(CHAR *curdir,CHAR *filename, INT valid,CHAR *errstr)
|
||||
{
|
||||
CHAR tmpstr[MAX_PATH],tmpstr1[MAX_PATH];
|
||||
SLpassfail passfail;
|
||||
|
||||
test_ValidPathA(curdir,"",filename,tmpstr,&passfail,errstr);
|
||||
if(valid) {
|
||||
sprintf(tmpstr1,"%s\\%s",curdir,filename);
|
||||
if(todo) {
|
||||
todo_wine {
|
||||
ok((passfail.shortlen==0 &&
|
||||
(passfail.shorterror==ERROR_FILE_NOT_FOUND || passfail.shorterror==ERROR_PATH_NOT_FOUND || !passfail.shorterror)) ||
|
||||
(passfail.shortlen==strlen(tmpstr1) && lstrcmpiA(tmpstr,tmpstr1)==0),
|
||||
"%s: GetShortPathNameA error: len=%ld error=%ld tmpstr=[%s]\n",
|
||||
errstr,passfail.shortlen,passfail.shorterror,tmpstr);
|
||||
}
|
||||
} else {
|
||||
ok((passfail.shortlen==0 &&
|
||||
(passfail.shorterror==ERROR_FILE_NOT_FOUND || passfail.shorterror==ERROR_PATH_NOT_FOUND || !passfail.shorterror)) ||
|
||||
(passfail.shortlen==strlen(tmpstr1) && lstrcmpiA(tmpstr,tmpstr1)==0),
|
||||
"%s: GetShortPathNameA error: len=%ld error=%ld tmpstr=[%s]\n",
|
||||
errstr,passfail.shortlen,passfail.shorterror,tmpstr);
|
||||
}
|
||||
} else {
|
||||
if(todo) {
|
||||
todo_wine {
|
||||
/* Win2k returns ERROR_INVALID_NAME, Win98, wine return ERROR_FILE_NOT_FOUND, NT4 doesn't set last error */
|
||||
ok(passfail.shortlen==0 &&
|
||||
(passfail.shorterror==ERROR_INVALID_NAME || passfail.shorterror==ERROR_FILE_NOT_FOUND || !passfail.shorterror),
|
||||
"%s: GetShortPathA should have failed len=%ld, error=%ld\n",
|
||||
errstr,passfail.shortlen,passfail.shorterror);
|
||||
}
|
||||
} else {
|
||||
ok(passfail.shortlen==0 &&
|
||||
(passfail.shorterror==ERROR_INVALID_NAME || passfail.shorterror==ERROR_FILE_NOT_FOUND || !passfail.shorterror),
|
||||
"%s: GetShortPathA should have failed len=%ld, error=%ld\n",
|
||||
errstr,passfail.shortlen,passfail.shorterror);
|
||||
}
|
||||
}
|
||||
if(pGetLongPathNameA) {
|
||||
ok(passfail.longlen==0,"GetLongPathNameA passed when it shouldn't have\n");
|
||||
|
@ -782,30 +761,29 @@ static void test_PathNameA(CHAR *curdir, CHAR curDrive, CHAR otherDrive)
|
|||
}
|
||||
/* Check out Get*PathNameA on some funny characters */
|
||||
for(i=0;i<lstrlenA(funny_chars);i++) {
|
||||
INT valid,todo;
|
||||
INT valid;
|
||||
valid=(is_char_ok[i]=='0') ? 0 : 1;
|
||||
todo=(wine_todo[i]=='0') ? 0 : 1;
|
||||
sprintf(tmpstr1,"check%d-1",i);
|
||||
sprintf(tmpstr,"file%c000.ext",funny_chars[i]);
|
||||
test_FunnyChars(curdir,tmpstr,valid,todo,tmpstr1);
|
||||
test_FunnyChars(curdir,tmpstr,valid,tmpstr1);
|
||||
sprintf(tmpstr1,"check%d-2",i);
|
||||
sprintf(tmpstr,"file000.e%ct",funny_chars[i]);
|
||||
test_FunnyChars(curdir,tmpstr,valid,todo,tmpstr1);
|
||||
test_FunnyChars(curdir,tmpstr,valid,tmpstr1);
|
||||
sprintf(tmpstr1,"check%d-3",i);
|
||||
sprintf(tmpstr,"%cfile000.ext",funny_chars[i]);
|
||||
test_FunnyChars(curdir,tmpstr,valid,todo,tmpstr1);
|
||||
test_FunnyChars(curdir,tmpstr,valid,tmpstr1);
|
||||
sprintf(tmpstr1,"check%d-4",i);
|
||||
sprintf(tmpstr,"file000%c.ext",funny_chars[i]);
|
||||
test_FunnyChars(curdir,tmpstr,valid,todo,tmpstr1);
|
||||
test_FunnyChars(curdir,tmpstr,valid,tmpstr1);
|
||||
sprintf(tmpstr1,"check%d-5",i);
|
||||
sprintf(tmpstr,"Long %c File",funny_chars[i]);
|
||||
test_FunnyChars(curdir,tmpstr,valid,0,tmpstr1);
|
||||
test_FunnyChars(curdir,tmpstr,valid,tmpstr1);
|
||||
sprintf(tmpstr1,"check%d-6",i);
|
||||
sprintf(tmpstr,"%c Long File",funny_chars[i]);
|
||||
test_FunnyChars(curdir,tmpstr,valid,0,tmpstr1);
|
||||
test_FunnyChars(curdir,tmpstr,valid,tmpstr1);
|
||||
sprintf(tmpstr1,"check%d-7",i);
|
||||
sprintf(tmpstr,"Long File %c",funny_chars[i]);
|
||||
test_FunnyChars(curdir,tmpstr,valid,0,tmpstr1);
|
||||
test_FunnyChars(curdir,tmpstr,valid,tmpstr1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -50,18 +50,28 @@
|
|||
|
||||
#define PIPENAME "\\\\.\\PiPe\\tests_" __FILE__
|
||||
|
||||
void test_CreateNamedPipe(void)
|
||||
#define NB_SERVER_LOOPS 8
|
||||
|
||||
static HANDLE alarm_event;
|
||||
|
||||
static void test_CreateNamedPipe(pipemode)
|
||||
{
|
||||
HANDLE hnp;
|
||||
HANDLE hFile;
|
||||
const char obuf[] = "Bit Bucket";
|
||||
char ibuf[32];
|
||||
static const char obuf[] = "Bit Bucket";
|
||||
static const char obuf2[] = "More bits";
|
||||
char ibuf[32], *pbuf;
|
||||
DWORD written;
|
||||
DWORD readden;
|
||||
DWORD avail;
|
||||
DWORD lpmode;
|
||||
|
||||
trace("test_CreateNamedPipe starting\n");
|
||||
if (pipemode == PIPE_TYPE_BYTE)
|
||||
trace("test_CreateNamedPipe starting in byte mode\n");
|
||||
else
|
||||
trace("test_CreateNamedPipe starting in message mode\n");
|
||||
/* Bad parameter checks */
|
||||
hnp = CreateNamedPipe("not a named pipe", PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_WAIT,
|
||||
hnp = CreateNamedPipe("not a named pipe", PIPE_ACCESS_DUPLEX, pipemode | PIPE_WAIT,
|
||||
/* nMaxInstances */ 1,
|
||||
/* nOutBufSize */ 1024,
|
||||
/* nInBufSize */ 1024,
|
||||
|
@ -78,7 +88,7 @@ void test_CreateNamedPipe(void)
|
|||
"CreateNamedPipe should fail if name doesn't start with \\\\.\\pipe\n");
|
||||
|
||||
hnp = CreateNamedPipe(NULL,
|
||||
PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_WAIT,
|
||||
PIPE_ACCESS_DUPLEX, pipemode | PIPE_WAIT,
|
||||
1, 1024, 1024, NMPWAIT_USE_DEFAULT_WAIT, NULL);
|
||||
ok(hnp == INVALID_HANDLE_VALUE && GetLastError() == ERROR_PATH_NOT_FOUND,
|
||||
"CreateNamedPipe should fail if name is NULL\n");
|
||||
|
@ -90,7 +100,7 @@ void test_CreateNamedPipe(void)
|
|||
|
||||
/* Functional checks */
|
||||
|
||||
hnp = CreateNamedPipe(PIPENAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_WAIT,
|
||||
hnp = CreateNamedPipe(PIPENAME, PIPE_ACCESS_DUPLEX, pipemode | PIPE_WAIT,
|
||||
/* nMaxInstances */ 1,
|
||||
/* nOutBufSize */ 1024,
|
||||
/* nInBufSize */ 1024,
|
||||
|
@ -108,17 +118,160 @@ void test_CreateNamedPipe(void)
|
|||
/* Make sure we can read and write a few bytes in both directions */
|
||||
memset(ibuf, 0, sizeof(ibuf));
|
||||
ok(WriteFile(hnp, obuf, sizeof(obuf), &written, NULL), "WriteFile\n");
|
||||
ok(written == sizeof(obuf), "write file len\n");
|
||||
ok(ReadFile(hFile, ibuf, sizeof(obuf), &readden, NULL), "ReadFile\n");
|
||||
ok(readden == sizeof(obuf), "read file len\n");
|
||||
ok(memcmp(obuf, ibuf, written) == 0, "content check\n");
|
||||
ok(written == sizeof(obuf), "write file len 1\n");
|
||||
ok(PeekNamedPipe(hFile, NULL, 0, NULL, &readden, NULL), "Peek\n");
|
||||
ok(readden == sizeof(obuf), "peek 1 got %ld bytes\n", readden);
|
||||
ok(ReadFile(hFile, ibuf, sizeof(ibuf), &readden, NULL), "ReadFile\n");
|
||||
ok(readden == sizeof(obuf), "read 1 got %ld bytes\n", readden);
|
||||
ok(memcmp(obuf, ibuf, written) == 0, "content 1 check\n");
|
||||
|
||||
memset(ibuf, 0, sizeof(ibuf));
|
||||
ok(WriteFile(hFile, obuf, sizeof(obuf), &written, NULL), "WriteFile\n");
|
||||
ok(written == sizeof(obuf), "write file len\n");
|
||||
ok(ReadFile(hnp, ibuf, sizeof(obuf), &readden, NULL), "ReadFile\n");
|
||||
ok(readden == sizeof(obuf), "read file len\n");
|
||||
ok(memcmp(obuf, ibuf, written) == 0, "content check\n");
|
||||
ok(WriteFile(hFile, obuf2, sizeof(obuf2), &written, NULL), "WriteFile\n");
|
||||
ok(written == sizeof(obuf2), "write file len 2\n");
|
||||
ok(PeekNamedPipe(hnp, NULL, 0, NULL, &readden, NULL), "Peek\n");
|
||||
ok(readden == sizeof(obuf2), "peek 2 got %ld bytes\n", readden);
|
||||
ok(ReadFile(hnp, ibuf, sizeof(ibuf), &readden, NULL), "ReadFile\n");
|
||||
ok(readden == sizeof(obuf2), "read 2 got %ld bytes\n", readden);
|
||||
ok(memcmp(obuf2, ibuf, written) == 0, "content 2 check\n");
|
||||
|
||||
/* Test reading of multiple writes */
|
||||
memset(ibuf, 0, sizeof(ibuf));
|
||||
ok(WriteFile(hnp, obuf, sizeof(obuf), &written, NULL), "WriteFile3a\n");
|
||||
ok(written == sizeof(obuf), "write file len 3a\n");
|
||||
ok(WriteFile(hnp, obuf2, sizeof(obuf2), &written, NULL), " WriteFile3b\n");
|
||||
ok(written == sizeof(obuf2), "write file len 3b\n");
|
||||
ok(PeekNamedPipe(hFile, ibuf, sizeof(ibuf), &readden, &avail, NULL), "Peek3\n");
|
||||
if (pipemode == PIPE_TYPE_BYTE) {
|
||||
todo_wine {
|
||||
/* should return all 23 bytes */
|
||||
ok(readden == sizeof(obuf) + sizeof(obuf2), "peek3 got %ld bytes\n", readden);
|
||||
}
|
||||
}
|
||||
else
|
||||
ok(readden == sizeof(obuf), "peek3 got %ld bytes\n", readden);
|
||||
todo_wine {
|
||||
ok(avail == sizeof(obuf) + sizeof(obuf2), "peek3 got %ld bytes available\n", avail);
|
||||
}
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf, pbuf, sizeof(obuf)) == 0, "pipe content 3a check\n");
|
||||
if (pipemode == PIPE_TYPE_BYTE) {
|
||||
todo_wine {
|
||||
pbuf += sizeof(obuf);
|
||||
ok(memcmp(obuf2, pbuf, sizeof(obuf2)) == 0, "pipe content 3b check\n");
|
||||
}
|
||||
}
|
||||
ok(ReadFile(hFile, ibuf, sizeof(ibuf), &readden, NULL), "ReadFile\n");
|
||||
ok(readden == sizeof(obuf) + sizeof(obuf2), "read 3 got %ld bytes\n", readden);
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf, pbuf, sizeof(obuf)) == 0, "content 3a check\n");
|
||||
pbuf += sizeof(obuf);
|
||||
ok(memcmp(obuf2, pbuf, sizeof(obuf2)) == 0, "content 3b check\n");
|
||||
|
||||
/* Multiple writes in the reverse direction */
|
||||
memset(ibuf, 0, sizeof(ibuf));
|
||||
ok(WriteFile(hFile, obuf, sizeof(obuf), &written, NULL), "WriteFile4a\n");
|
||||
ok(written == sizeof(obuf), "write file len 4a\n");
|
||||
ok(WriteFile(hFile, obuf2, sizeof(obuf2), &written, NULL), " WriteFile4b\n");
|
||||
ok(written == sizeof(obuf2), "write file len 4b\n");
|
||||
ok(PeekNamedPipe(hnp, ibuf, sizeof(ibuf), &readden, &avail, NULL), "Peek4\n");
|
||||
if (pipemode == PIPE_TYPE_BYTE) {
|
||||
todo_wine {
|
||||
/* should return all 23 bytes */
|
||||
ok(readden == sizeof(obuf) + sizeof(obuf2), "peek4 got %ld bytes\n", readden);
|
||||
}
|
||||
}
|
||||
else
|
||||
ok(readden == sizeof(obuf), "peek4 got %ld bytes\n", readden);
|
||||
todo_wine {
|
||||
ok(avail == sizeof(obuf) + sizeof(obuf2), "peek4 got %ld bytes available\n", avail);
|
||||
}
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf, pbuf, sizeof(obuf)) == 0, "pipe content 4a check\n");
|
||||
if (pipemode == PIPE_TYPE_BYTE) {
|
||||
todo_wine {
|
||||
pbuf += sizeof(obuf);
|
||||
ok(memcmp(obuf2, pbuf, sizeof(obuf2)) == 0, "pipe content 4b check\n");
|
||||
}
|
||||
}
|
||||
ok(ReadFile(hnp, ibuf, sizeof(ibuf), &readden, NULL), "ReadFile\n");
|
||||
if (pipemode == PIPE_TYPE_BYTE) {
|
||||
ok(readden == sizeof(obuf) + sizeof(obuf2), "read 4 got %ld bytes\n", readden);
|
||||
}
|
||||
else {
|
||||
todo_wine {
|
||||
ok(readden == sizeof(obuf), "read 4 got %ld bytes\n", readden);
|
||||
}
|
||||
}
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf, pbuf, sizeof(obuf)) == 0, "content 4a check\n");
|
||||
if (pipemode == PIPE_TYPE_BYTE) {
|
||||
pbuf += sizeof(obuf);
|
||||
ok(memcmp(obuf2, pbuf, sizeof(obuf2)) == 0, "content 4b check\n");
|
||||
}
|
||||
|
||||
/* Test reading of multiple writes after a mode change
|
||||
(CreateFile always creates a byte mode pipe) */
|
||||
lpmode = PIPE_READMODE_MESSAGE;
|
||||
if (pipemode == PIPE_TYPE_BYTE) {
|
||||
/* trying to change the client end of a byte pipe to message mode should fail */
|
||||
ok(!SetNamedPipeHandleState(hFile, &lpmode, NULL, NULL), "Change mode\n");
|
||||
}
|
||||
else {
|
||||
todo_wine {
|
||||
ok(SetNamedPipeHandleState(hFile, &lpmode, NULL, NULL), "Change mode\n");
|
||||
}
|
||||
|
||||
memset(ibuf, 0, sizeof(ibuf));
|
||||
ok(WriteFile(hnp, obuf, sizeof(obuf), &written, NULL), "WriteFile5a\n");
|
||||
ok(written == sizeof(obuf), "write file len 3a\n");
|
||||
ok(WriteFile(hnp, obuf2, sizeof(obuf2), &written, NULL), " WriteFile5b\n");
|
||||
ok(written == sizeof(obuf2), "write file len 3b\n");
|
||||
ok(PeekNamedPipe(hFile, ibuf, sizeof(ibuf), &readden, &avail, NULL), "Peek5\n");
|
||||
ok(readden == sizeof(obuf), "peek5 got %ld bytes\n", readden);
|
||||
todo_wine {
|
||||
ok(avail == sizeof(obuf) + sizeof(obuf2), "peek5 got %ld bytes available\n", avail);
|
||||
}
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf, pbuf, sizeof(obuf)) == 0, "content 5a check\n");
|
||||
ok(ReadFile(hFile, ibuf, sizeof(ibuf), &readden, NULL), "ReadFile\n");
|
||||
todo_wine {
|
||||
ok(readden == sizeof(obuf), "read 5 got %ld bytes\n", readden);
|
||||
}
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf, pbuf, sizeof(obuf)) == 0, "content 5a check\n");
|
||||
|
||||
/* Multiple writes in the reverse direction */
|
||||
/* the write of obuf2 from write4 should still be in the buffer */
|
||||
ok(PeekNamedPipe(hnp, ibuf, sizeof(ibuf), &readden, &avail, NULL), "Peek6a\n");
|
||||
todo_wine {
|
||||
ok(readden == sizeof(obuf2), "peek6a got %ld bytes\n", readden);
|
||||
ok(avail == sizeof(obuf2), "peek6a got %ld bytes available\n", avail);
|
||||
}
|
||||
if (avail > 0) {
|
||||
ok(ReadFile(hnp, ibuf, sizeof(ibuf), &readden, NULL), "ReadFile\n");
|
||||
ok(readden == sizeof(obuf2), "read 6a got %ld bytes\n", readden);
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf2, pbuf, sizeof(obuf2)) == 0, "content 6a check\n");
|
||||
}
|
||||
memset(ibuf, 0, sizeof(ibuf));
|
||||
ok(WriteFile(hFile, obuf, sizeof(obuf), &written, NULL), "WriteFile6a\n");
|
||||
ok(written == sizeof(obuf), "write file len 6a\n");
|
||||
ok(WriteFile(hFile, obuf2, sizeof(obuf2), &written, NULL), " WriteFile6b\n");
|
||||
ok(written == sizeof(obuf2), "write file len 6b\n");
|
||||
ok(PeekNamedPipe(hnp, ibuf, sizeof(ibuf), &readden, &avail, NULL), "Peek6\n");
|
||||
ok(readden == sizeof(obuf), "peek6 got %ld bytes\n", readden);
|
||||
todo_wine {
|
||||
ok(avail == sizeof(obuf) + sizeof(obuf2), "peek6b got %ld bytes available\n", avail);
|
||||
}
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf, pbuf, sizeof(obuf)) == 0, "content 6a check\n");
|
||||
ok(ReadFile(hnp, ibuf, sizeof(ibuf), &readden, NULL), "ReadFile\n");
|
||||
todo_wine {
|
||||
ok(readden == sizeof(obuf), "read 6b got %ld bytes\n", readden);
|
||||
}
|
||||
pbuf = ibuf;
|
||||
ok(memcmp(obuf, pbuf, sizeof(obuf)) == 0, "content 6a check\n");
|
||||
}
|
||||
|
||||
/* Picky conformance tests */
|
||||
|
||||
|
@ -235,9 +388,11 @@ static DWORD CALLBACK alarmThreadMain(LPVOID arg)
|
|||
{
|
||||
DWORD timeout = (DWORD) arg;
|
||||
trace("alarmThreadMain\n");
|
||||
Sleep(timeout);
|
||||
ok(FALSE, "alarm\n");
|
||||
ExitProcess(1);
|
||||
if (WaitForSingleObject( alarm_event, timeout ) == WAIT_TIMEOUT)
|
||||
{
|
||||
ok(FALSE, "alarm\n");
|
||||
ExitProcess(1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -259,7 +414,7 @@ static DWORD CALLBACK serverThreadMain1(LPVOID arg)
|
|||
/* lpSecurityAttrib */ NULL);
|
||||
|
||||
ok(hnp != INVALID_HANDLE_VALUE, "CreateNamedPipe failed\n");
|
||||
for (i = 0; ; i++) {
|
||||
for (i = 0; i < NB_SERVER_LOOPS; i++) {
|
||||
char buf[512];
|
||||
DWORD written;
|
||||
DWORD readden;
|
||||
|
@ -291,6 +446,7 @@ static DWORD CALLBACK serverThreadMain1(LPVOID arg)
|
|||
ok(DisconnectNamedPipe(hnp), "DisconnectNamedPipe\n");
|
||||
trace("Server done disconnecting.\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Trivial byte echo server - closes after each connection */
|
||||
|
@ -310,7 +466,7 @@ static DWORD CALLBACK serverThreadMain2(LPVOID arg)
|
|||
/* lpSecurityAttrib */ NULL);
|
||||
ok(hnp != INVALID_HANDLE_VALUE, "CreateNamedPipe failed\n");
|
||||
|
||||
for (i = 0; ; i++) {
|
||||
for (i = 0; i < NB_SERVER_LOOPS; i++) {
|
||||
char buf[512];
|
||||
DWORD written;
|
||||
DWORD readden;
|
||||
|
@ -354,6 +510,7 @@ static DWORD CALLBACK serverThreadMain2(LPVOID arg)
|
|||
ok(CloseHandle(hnp), "CloseHandle\n");
|
||||
hnp = hnpNext;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Trivial byte echo server - uses overlapped named pipe calls */
|
||||
|
@ -379,7 +536,7 @@ static DWORD CALLBACK serverThreadMain3(LPVOID arg)
|
|||
NULL); /* name */
|
||||
ok(hEvent != NULL, "CreateEvent\n");
|
||||
|
||||
for (i = 0; ; i++) {
|
||||
for (i = 0; i < NB_SERVER_LOOPS; i++) {
|
||||
char buf[512];
|
||||
DWORD written;
|
||||
DWORD readden;
|
||||
|
@ -450,6 +607,7 @@ static DWORD CALLBACK serverThreadMain3(LPVOID arg)
|
|||
ok(FlushFileBuffers(hnp), "FlushFileBuffers\n");
|
||||
ok(DisconnectNamedPipe(hnp), "DisconnectNamedPipe\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void exercizeServer(const char *pipename, HANDLE serverThread)
|
||||
|
@ -457,9 +615,9 @@ static void exercizeServer(const char *pipename, HANDLE serverThread)
|
|||
int i;
|
||||
|
||||
trace("exercizeServer starting\n");
|
||||
for (i = 0; i < 8; i++) {
|
||||
for (i = 0; i < NB_SERVER_LOOPS; i++) {
|
||||
HANDLE hFile=INVALID_HANDLE_VALUE;
|
||||
const char obuf[] = "Bit Bucket";
|
||||
static const char obuf[] = "Bit Bucket";
|
||||
char ibuf[32];
|
||||
DWORD written;
|
||||
DWORD readden;
|
||||
|
@ -497,12 +655,12 @@ static void exercizeServer(const char *pipename, HANDLE serverThread)
|
|||
ok(CloseHandle(hFile), "CloseHandle\n");
|
||||
}
|
||||
|
||||
ok(TerminateThread(serverThread, 0), "TerminateThread\n");
|
||||
ok(WaitForSingleObject(serverThread,INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject\n");
|
||||
CloseHandle(hnp);
|
||||
trace("exercizeServer returning\n");
|
||||
}
|
||||
|
||||
void test_NamedPipe_2(void)
|
||||
static void test_NamedPipe_2(void)
|
||||
{
|
||||
HANDLE serverThread;
|
||||
DWORD serverThreadId;
|
||||
|
@ -511,6 +669,7 @@ void test_NamedPipe_2(void)
|
|||
|
||||
trace("test_NamedPipe_2 starting\n");
|
||||
/* Set up a ten second timeout */
|
||||
alarm_event = CreateEvent( NULL, TRUE, FALSE, NULL );
|
||||
alarmThread = CreateThread(NULL, 0, alarmThreadMain, (void *) 10000, 0, &alarmThreadId);
|
||||
|
||||
/* The servers we're about to exercize do try to clean up carefully,
|
||||
|
@ -519,7 +678,7 @@ void test_NamedPipe_2(void)
|
|||
*/
|
||||
|
||||
/* Try server #1 */
|
||||
serverThread = CreateThread(NULL, 0, serverThreadMain1, 0, 0, &serverThreadId);
|
||||
serverThread = CreateThread(NULL, 0, serverThreadMain1, (void *)8, 0, &serverThreadId);
|
||||
ok(serverThread != INVALID_HANDLE_VALUE, "CreateThread\n");
|
||||
exercizeServer(PIPENAME "serverThreadMain1", serverThread);
|
||||
|
||||
|
@ -536,15 +695,16 @@ void test_NamedPipe_2(void)
|
|||
exercizeServer(PIPENAME "serverThreadMain3", serverThread);
|
||||
}
|
||||
|
||||
ok(TerminateThread(alarmThread, 0), "TerminateThread\n");
|
||||
ok(SetEvent( alarm_event ), "SetEvent\n");
|
||||
CloseHandle( alarm_event );
|
||||
trace("test_NamedPipe_2 returning\n");
|
||||
}
|
||||
|
||||
void test_DisconnectNamedPipe(void)
|
||||
static void test_DisconnectNamedPipe(void)
|
||||
{
|
||||
HANDLE hnp;
|
||||
HANDLE hFile;
|
||||
const char obuf[] = "Bit Bucket";
|
||||
static const char obuf[] = "Bit Bucket";
|
||||
char ibuf[32];
|
||||
DWORD written;
|
||||
DWORD readden;
|
||||
|
@ -596,6 +756,8 @@ START_TEST(pipe)
|
|||
trace("test 3 of 4:\n");
|
||||
test_NamedPipe_2();
|
||||
trace("test 4 of 4:\n");
|
||||
test_CreateNamedPipe();
|
||||
test_CreateNamedPipe(PIPE_TYPE_BYTE);
|
||||
trace("all tests done\n");
|
||||
test_CreateNamedPipe(PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE);
|
||||
trace("all tests done\n");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue