kernel32/tests: [1/2] Add tests for GetSystemDirectory (resend without changes)

Detlef Riekenberg wine.dev at web.de
Sun Dec 3 15:38:21 CST 2006


Subject: kernel32/tests: [1/2] Add Tests for GetSystemDirectory
Date: Sun, 19 Nov 2006 16:52:47 +0100


Resend without changes (was dropped without comments)


Changelog:
- kernel32/tests: Add tests for GetSystemDirectory



-- 
 
By by ... Detlef

-------------- next part --------------
>From 52ca3c80d7570eccdf263e9d707d62d67b3bb7a0 Mon Sep 17 00:00:00 2001
From: Detlef Riekenberg <wine.dev at web.de>
Date: Sun, 3 Dec 2006 22:31:34 +0100
Subject: [PATCH] kernel32/tests: Add test 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..cb4b348 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 Rekenberg
  *
  * 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();
 }
-- 
1.4.1



More information about the wine-patches mailing list