Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216/* * PROJECT: ReactOS api tests * LICENSE: GPLv2+ - See COPYING in the top level directory * PURPOSE: Test for GetCurrentDirectory * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> */
#include "precomp.h"
staticBOOLEANCheckBuffer( const VOID *Buffer, SIZE_T Size, UCHAR Value){ const UCHAR *Array = Buffer; SIZE_T i;
for (i = 0; i < Size; i++) if (Array[i] != Value) { trace("Expected %x, found %x at offset %lu\n", Value, Array[i], (ULONG)i); return FALSE; } return TRUE;}
staticBOOLEANCheckStringBufferA( const VOID *Buffer, SIZE_T Size, PCSTR Expected, UCHAR Fill){ const CHAR *Chars = Buffer; const UCHAR *UChars = Buffer; SIZE_T Length = strlen(Expected); SIZE_T i;
if (Size < Length) { ok(0, "Size = %lu, Length = %lu\n", (ULONG)Size, (ULONG)Length); return FALSE; }
for (i = 0; i < Length; i++) if (Chars[i] != Expected[i]) { trace("Expected %x, found %x at offset %lu\n", Expected[i], Chars[i], (ULONG)i); return FALSE; }
ok(Chars[i] == 0, "Expected null terminator, found %x at offset %lu\n", Chars[i], (ULONG)i); i++;
for (; i < Size; i++) if (UChars[i] != Fill) { trace("Expected %x, found %x at offset %lu\n", Fill, UChars[i], (ULONG)i); return FALSE; } return TRUE;}
staticBOOLEANCheckStringBufferW( const VOID *Buffer, SIZE_T Size, PCWSTR Expected, UCHAR Fill){ const WCHAR *Chars = Buffer; const UCHAR *UChars = Buffer; SIZE_T Length = wcslen(Expected); SIZE_T i;
if (Size < Length) { ok(0, "Size = %lu, Length = %lu\n", (ULONG)Size, (ULONG)Length); return FALSE; }
for (i = 0; i < Length; i++) if (Chars[i] != Expected[i]) { trace("Expected %x, found %x at offset %lu\n", Expected[i], Chars[i], (ULONG)i); return FALSE; }
ok(Chars[i] == 0, "Expected null terminator, found %x at offset %lu\n", Chars[i], (ULONG)i); i++;
i *= sizeof(WCHAR);
for (; i < Size; i++) if (UChars[i] != Fill) { trace("Expected %x, found %x at offset %lu\n", Fill, UChars[i], (ULONG)i); return FALSE; } return TRUE;}
staticVOIDTestGetCurrentDirectoryA(VOID){ CHAR Buffer[MAX_PATH]; DWORD Length; BOOL Ret; BOOLEAN Okay;
Ret = SetCurrentDirectoryA("C:\\"); ok(Ret == TRUE, "SetCurrentDirectory failed with %lu\n", GetLastError());
Length = GetCurrentDirectoryA(0, NULL); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length);
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); ok(Length == sizeof("C:\\") - 1, "Length = %lu\n", Length); Okay = CheckStringBufferA(Buffer, sizeof(Buffer), "C:\\", 0x55); ok(Okay, "CheckStringBufferA failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryA(0, Buffer); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length); Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55); ok(Okay, "CheckBuffer failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryA(1, Buffer); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length); Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55); ok(Okay, "CheckBuffer failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryA(2, Buffer); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length); Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55); ok(Okay, "CheckBuffer failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryA(3, Buffer); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length); Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55); ok(Okay, "CheckBuffer failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryA(4, Buffer); ok(Length == sizeof("C:\\") - 1, "Length = %lu\n", Length); Okay = CheckStringBufferA(Buffer, sizeof(Buffer), "C:\\", 0x55); ok(Okay, "CheckStringBufferA failed\n");}
staticVOIDTestGetCurrentDirectoryW(VOID){ WCHAR Buffer[MAX_PATH]; DWORD Length; BOOL Ret; BOOLEAN Okay;
Ret = SetCurrentDirectoryW(L"C:\\"); ok(Ret == TRUE, "SetCurrentDirectory failed with %lu\n", GetLastError());
Length = GetCurrentDirectoryW(0, NULL); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length);
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); ok(Length == sizeof("C:\\") - 1, "Length = %lu\n", Length); Okay = CheckStringBufferW(Buffer, sizeof(Buffer), L"C:\\", 0x55); ok(Okay, "CheckStringBufferW failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryW(0, Buffer); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length); Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55); ok(Okay, "CheckBuffer failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryW(1, Buffer); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length); Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55); ok(Okay, "CheckBuffer failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryW(2, Buffer); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length); Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55); ok(Okay, "CheckBuffer failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryW(3, Buffer); ok(Length == sizeof("C:\\"), "Length = %lu\n", Length); Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55); ok(Okay, "CheckBuffer failed\n");
RtlFillMemory(Buffer, sizeof(Buffer), 0x55); Length = GetCurrentDirectoryW(4, Buffer); ok(Length == sizeof("C:\\") - 1, "Length = %lu\n", Length); Okay = CheckStringBufferW(Buffer, sizeof(Buffer), L"C:\\", 0x55); ok(Okay, "CheckStringBufferW failed\n");}
START_TEST(GetCurrentDirectory){ TestGetCurrentDirectoryA(); TestGetCurrentDirectoryW();}