Detlef Riekenberg : kernel32/tests: Add tests for GetSystemDirectory.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Dec 6 05:48:58 CST 2006
Module: wine
Branch: master
Commit: ef851bc6dd2c35ae517cd5fc085386f8ebd47165
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ef851bc6dd2c35ae517cd5fc085386f8ebd47165
Author: Detlef Riekenberg <wine.dev at web.de>
Date: Sun Dec 3 22:38:21 2006 +0100
kernel32/tests: Add tests for GetSystemDirectory.
---
dlls/kernel32/tests/path.c | 64 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 63 insertions(+), 1 deletions(-)
diff --git a/dlls/kernel32/tests/path.c b/dlls/kernel32/tests/path.c
index b4165e6..971fc44 100644
--- a/dlls/kernel32/tests/path.c
+++ b/dlls/kernel32/tests/path.c
@@ -1,7 +1,8 @@
/*
- * Unit test suite for Get*PathNamesA and (Get|Set)CurrentDirectoryA.
+ * Unit test suite for various Path and Directory Functions
*
* Copyright 2002 Geoffrey Hausheer
+ * Copyright 2006 Detlef Riekenberg
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -951,6 +952,66 @@ static void test_GetLongPathNameW(void)
}
}
+static void test_GetSystemDirectory(void)
+{
+ CHAR buffer[MAX_PATH + 4];
+ DWORD res;
+ DWORD total;
+
+ SetLastError(0xdeadbeef);
+ res = GetSystemDirectory(NULL, 0);
+ /* res includes the terminating Zero */
+ ok(res > 0, "returned %d with 0x%x (expected '>0')\n", res, GetLastError());
+
+ total = res;
+#if 0
+ /* this test crash on XP */
+ res = GetSystemDirectory(NULL, total);
+#endif
+
+ SetLastError(0xdeadbeef);
+ res = GetSystemDirectory(NULL, total-1);
+ /* 95+NT: total (includes the terminating Zero)
+ 98+ME: 0 with ERROR_INVALID_PARAMETER */
+ ok( (res == total) || (!res && (GetLastError() == ERROR_INVALID_PARAMETER)),
+ "returned %d with 0x%x (expected '%d' or: '0' with " \
+ "ERROR_INVALID_PARAMETER)\n", res, GetLastError(), total);
+
+ if (total > MAX_PATH) return;
+
+ buffer[0] = '\0';
+ SetLastError(0xdeadbeef);
+ res = GetSystemDirectory(buffer, total);
+ /* res does not include the terminating Zero */
+ ok( (res == (total-1)) && (buffer[0]),
+ "returned %d with 0x%x and '%s' (expected '%d' and a string)\n",
+ res, GetLastError(), buffer, total-1);
+
+ buffer[0] = '\0';
+ SetLastError(0xdeadbeef);
+ res = GetSystemDirectory(buffer, total + 1);
+ /* res does not include the terminating Zero */
+ ok( (res == (total-1)) && (buffer[0]),
+ "returned %d with 0x%x and '%s' (expected '%d' and a string)\n",
+ res, GetLastError(), buffer, total-1);
+
+ memset(buffer, '#', total + 1);
+ buffer[total + 2] = '\0';
+ SetLastError(0xdeadbeef);
+ res = GetSystemDirectory(buffer, total-1);
+ /* res includes the terminating Zero) */
+ ok( res == total, "returned %d with 0x%x and '%s' (expected '%d')\n",
+ res, GetLastError(), buffer, total);
+
+ memset(buffer, '#', total + 1);
+ buffer[total + 2] = '\0';
+ SetLastError(0xdeadbeef);
+ res = GetSystemDirectory(buffer, total-2);
+ /* res includes the terminating Zero) */
+ ok( res == total, "returned %d with 0x%x and '%s' (expected '%d')\n",
+ res, GetLastError(), buffer, total);
+}
+
START_TEST(path)
{
CHAR origdir[MAX_PATH],curdir[MAX_PATH], curDrive, otherDrive;
@@ -964,4 +1025,5 @@ START_TEST(path)
test_CleanupPathA(origdir,curdir);
test_GetTempPath();
test_GetLongPathNameW();
+ test_GetSystemDirectory();
}
More information about the wine-cvs
mailing list