mirror of
https://github.com/reactos/reactos.git
synced 2025-05-07 18:56:48 +00:00
[KERNEL32_APITEST] Add a few tests for GetVolumeInformation that were used to fix previous issues
This commit is contained in:
parent
5bfc68cc14
commit
eb05356a26
3 changed files with 130 additions and 0 deletions
|
@ -13,6 +13,7 @@ list(APPEND SOURCE
|
||||||
GetCurrentDirectory.c
|
GetCurrentDirectory.c
|
||||||
GetDriveType.c
|
GetDriveType.c
|
||||||
GetModuleFileName.c
|
GetModuleFileName.c
|
||||||
|
GetVolumeInformation.c
|
||||||
interlck.c
|
interlck.c
|
||||||
IsDBCSLeadByteEx.c
|
IsDBCSLeadByteEx.c
|
||||||
LoadLibraryExW.c
|
LoadLibraryExW.c
|
||||||
|
|
127
modules/rostests/apitests/kernel32/GetVolumeInformation.c
Normal file
127
modules/rostests/apitests/kernel32/GetVolumeInformation.c
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS api tests
|
||||||
|
* LICENSE: GPLv2+ - See COPYING in the top level directory
|
||||||
|
* PURPOSE: Tests for GetVolumeInformation
|
||||||
|
* PROGRAMMER: Pierre Schweitzer <pierre@reactos.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <apitest.h>
|
||||||
|
|
||||||
|
#define WIN32_NO_STATUS
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
TestGetVolumeInformationA(VOID)
|
||||||
|
{
|
||||||
|
BOOL Ret;
|
||||||
|
CHAR Outbuf[MAX_PATH];
|
||||||
|
DWORD i, MCL, Flags, Len;
|
||||||
|
|
||||||
|
memset(Outbuf, 0xAA, MAX_PATH);
|
||||||
|
Ret = GetVolumeInformationA("C:\\", NULL, 0, NULL, &MCL, &Flags, Outbuf, MAX_PATH);
|
||||||
|
ok(Ret != FALSE, "GetVolumeInformationA failed: %ld\n", GetLastError());
|
||||||
|
for (i = 0; i < MAX_PATH; ++i)
|
||||||
|
{
|
||||||
|
if (Outbuf[i] == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ok(i != MAX_PATH, "String was not null terminated!\n");
|
||||||
|
|
||||||
|
memset(Outbuf, 0xAA, MAX_PATH);
|
||||||
|
Len = i;
|
||||||
|
Ret = GetVolumeInformationA("C:\\", NULL, 0, NULL, &MCL, &Flags, Outbuf, Len + 1);
|
||||||
|
ok(Ret != FALSE, "GetVolumeInformationA failed: %ld\n", GetLastError());
|
||||||
|
for (i = 0; i < MAX_PATH; ++i)
|
||||||
|
{
|
||||||
|
if (Outbuf[i] == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ok(i != MAX_PATH, "String was not null terminated!\n");
|
||||||
|
ok(i == Len, "String was truncated\n");
|
||||||
|
|
||||||
|
memset(Outbuf, 0xAA, MAX_PATH);
|
||||||
|
Len = i;
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = GetVolumeInformationA("C:\\", NULL, 0, NULL, &MCL, &Flags, Outbuf, Len);
|
||||||
|
ok(Ret != TRUE, "GetVolumeInformationA succeed\n");
|
||||||
|
ok(GetLastError() == ERROR_BAD_LENGTH, "Expected ERROR_BAD_LENGTH error, got %ld\n", GetLastError());
|
||||||
|
ok(Outbuf[0] != 0xAA, "Output buffer was not written to\n");
|
||||||
|
for (i = 0; i < MAX_PATH; ++i)
|
||||||
|
{
|
||||||
|
if (Outbuf[i] == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ok(i == MAX_PATH, "String was null terminated!\n");
|
||||||
|
for (i = 0; i < MAX_PATH; ++i)
|
||||||
|
{
|
||||||
|
if (Outbuf[i] != 0xAA)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ok(i != MAX_PATH, "String was not written to!\n");
|
||||||
|
ok(i < Len, "Buffer has been overruned\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
TestGetVolumeInformationW(VOID)
|
||||||
|
{
|
||||||
|
BOOL Ret;
|
||||||
|
WCHAR Outbuf[MAX_PATH];
|
||||||
|
DWORD i, MCL, Flags, Len;
|
||||||
|
|
||||||
|
memset(Outbuf, 0xAA, MAX_PATH);
|
||||||
|
Ret = GetVolumeInformationW(L"C:\\", NULL, 0, NULL, &MCL, &Flags, Outbuf, MAX_PATH);
|
||||||
|
ok(Ret != FALSE, "GetVolumeInformationW failed: %ld\n", GetLastError());
|
||||||
|
for (i = 0; i < MAX_PATH; ++i)
|
||||||
|
{
|
||||||
|
if (Outbuf[i] == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ok(i != MAX_PATH, "String was not null terminated!\n");
|
||||||
|
|
||||||
|
memset(Outbuf, 0xAA, MAX_PATH);
|
||||||
|
Len = i;
|
||||||
|
Ret = GetVolumeInformationW(L"C:\\", NULL, 0, NULL, &MCL, &Flags, Outbuf, Len + 1);
|
||||||
|
ok(Ret != FALSE, "GetVolumeInformationW failed: %ld\n", GetLastError());
|
||||||
|
for (i = 0; i < MAX_PATH; ++i)
|
||||||
|
{
|
||||||
|
if (Outbuf[i] == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ok(i != MAX_PATH, "String was not null terminated!\n");
|
||||||
|
ok(i == Len, "String was truncated\n");
|
||||||
|
|
||||||
|
memset(Outbuf, 0xAA, MAX_PATH);
|
||||||
|
Len = i;
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
Ret = GetVolumeInformationW(L"C:\\", NULL, 0, NULL, &MCL, &Flags, Outbuf, Len);
|
||||||
|
ok(Ret != TRUE, "GetVolumeInformationW succeed\n");
|
||||||
|
ok(GetLastError() == ERROR_BAD_LENGTH, "Expected ERROR_BAD_LENGTH error, got %ld\n", GetLastError());
|
||||||
|
ok(Outbuf[0] != 0xAA, "Output buffer was not written to\n");
|
||||||
|
for (i = 0; i < MAX_PATH; ++i)
|
||||||
|
{
|
||||||
|
if (Outbuf[i] == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ok(i != MAX_PATH, "String was not null terminated!\n");
|
||||||
|
ok(i >= Len, "Buffer has not been overruned\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST(GetVolumeInformation)
|
||||||
|
{
|
||||||
|
TestGetVolumeInformationW();
|
||||||
|
TestGetVolumeInformationA();
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ extern void func_GetComputerNameEx(void);
|
||||||
extern void func_GetCurrentDirectory(void);
|
extern void func_GetCurrentDirectory(void);
|
||||||
extern void func_GetDriveType(void);
|
extern void func_GetDriveType(void);
|
||||||
extern void func_GetModuleFileName(void);
|
extern void func_GetModuleFileName(void);
|
||||||
|
extern void func_GetVolumeInformation(void);
|
||||||
extern void func_interlck(void);
|
extern void func_interlck(void);
|
||||||
extern void func_IsDBCSLeadByteEx(void);
|
extern void func_IsDBCSLeadByteEx(void);
|
||||||
extern void func_LoadLibraryExW(void);
|
extern void func_LoadLibraryExW(void);
|
||||||
|
@ -42,6 +43,7 @@ const struct test winetest_testlist[] =
|
||||||
{ "GetCurrentDirectory", func_GetCurrentDirectory },
|
{ "GetCurrentDirectory", func_GetCurrentDirectory },
|
||||||
{ "GetDriveType", func_GetDriveType },
|
{ "GetDriveType", func_GetDriveType },
|
||||||
{ "GetModuleFileName", func_GetModuleFileName },
|
{ "GetModuleFileName", func_GetModuleFileName },
|
||||||
|
{ "GetVolumeInformation", func_GetVolumeInformation },
|
||||||
{ "interlck", func_interlck },
|
{ "interlck", func_interlck },
|
||||||
{ "IsDBCSLeadByteEx", func_IsDBCSLeadByteEx },
|
{ "IsDBCSLeadByteEx", func_IsDBCSLeadByteEx },
|
||||||
{ "LoadLibraryExW", func_LoadLibraryExW },
|
{ "LoadLibraryExW", func_LoadLibraryExW },
|
||||||
|
|
Loading…
Reference in a new issue