From 4145a7a8a1bf6af21fdbd143258450f4195e27ed Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Fri, 22 Mar 2002 01:00:17 +0000 Subject: [PATCH] Added tests for GetSystemDirectoryA/W and GetWindowsDirectoryA/W. --- dlls/kernel/Makefile.in | 3 + dlls/kernel/tests/.cvsignore | 3 + dlls/kernel/tests/directory.c | 128 +++++++++++++++++++++++++++ dlls/kernel/tests/kernel32_test.spec | 5 ++ 4 files changed, 139 insertions(+) create mode 100644 dlls/kernel/tests/directory.c create mode 100644 dlls/kernel/tests/kernel32_test.spec diff --git a/dlls/kernel/Makefile.in b/dlls/kernel/Makefile.in index 889dfbd0548..bebfe109d61 100644 --- a/dlls/kernel/Makefile.in +++ b/dlls/kernel/Makefile.in @@ -39,6 +39,9 @@ EXTRASUBDIRS = \ nls \ tests +CTESTS = \ + tests/directory.c + PLTESTS = \ tests/atom.pl diff --git a/dlls/kernel/tests/.cvsignore b/dlls/kernel/tests/.cvsignore index d91ba664e2b..7412a6b4a5f 100644 --- a/dlls/kernel/tests/.cvsignore +++ b/dlls/kernel/tests/.cvsignore @@ -1 +1,4 @@ atom.ok +directory.ok +kernel32_test.spec.c +testlist.c diff --git a/dlls/kernel/tests/directory.c b/dlls/kernel/tests/directory.c new file mode 100644 index 00000000000..2d8d9003b43 --- /dev/null +++ b/dlls/kernel/tests/directory.c @@ -0,0 +1,128 @@ +/* + * Unit test suite for directory functions. + * + * Copyright 2002 Dmitry Timoshkov + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "winbase.h" +#include "wine/test.h" + + +/* If you change something in these tests, please do the same + * for GetSystemDirectory tests. + */ +static void test_GetWindowsDirectoryA(void) +{ + UINT len, len_with_null; + char buf[MAX_PATH]; + + lstrcpyA(buf, "foo"); + len_with_null = GetWindowsDirectoryA(buf, 1); + ok(lstrcmpA(buf, "foo") == 0, "should not touch the buffer"); + ok(len_with_null <= MAX_PATH, "should fit into MAX_PATH"); + + lstrcpyA(buf, "foo"); + len = GetWindowsDirectoryA(buf, len_with_null - 1); + ok(lstrcmpA(buf, "foo") == 0, "should not touch the buffer"); + ok(len == len_with_null, "should return length with terminating 0"); + + lstrcpyA(buf, "foo"); + len = GetWindowsDirectoryA(buf, len_with_null); + ok(lstrcmpA(buf, "foo") != 0, "should touch the buffer"); + ok(len == lstrlenA(buf), "returned length should be equal to the length of string"); + ok(len == (len_with_null - 1), "should return length without terminating 0"); +} + +static void test_GetWindowsDirectoryW(void) +{ + UINT len, len_with_null; + WCHAR buf[MAX_PATH]; + static const WCHAR fooW[] = {'f','o','o',0}; + + lstrcpyW(buf, fooW); + len_with_null = GetWindowsDirectoryW(buf, 1); + ok(lstrcmpW(buf, fooW) == 0, "should not touch the buffer"); + ok(len_with_null <= MAX_PATH, "should fit into MAX_PATH"); + + lstrcpyW(buf, fooW); + len = GetWindowsDirectoryW(buf, len_with_null - 1); + ok(lstrcmpW(buf, fooW) == 0, "should not touch the buffer"); + ok(len == len_with_null, "should return length with terminating 0"); + + lstrcpyW(buf, fooW); + len = GetWindowsDirectoryW(buf, len_with_null); + ok(lstrcmpW(buf, fooW) != 0, "should touch the buffer"); + ok(len == lstrlenW(buf), "returned length should be equal to the length of string"); + ok(len == (len_with_null - 1), "should return length without terminating 0"); +} + + +/* If you change something in these tests, please do the same + * for GetWindowsDirectory tests. + */ +static void test_GetSystemDirectoryA(void) +{ + UINT len, len_with_null; + char buf[MAX_PATH]; + + lstrcpyA(buf, "foo"); + len_with_null = GetSystemDirectoryA(buf, 1); + ok(lstrcmpA(buf, "foo") == 0, "should not touch the buffer"); + ok(len_with_null <= MAX_PATH, "should fit into MAX_PATH"); + + lstrcpyA(buf, "foo"); + len = GetSystemDirectoryA(buf, len_with_null - 1); + ok(lstrcmpA(buf, "foo") == 0, "should not touch the buffer"); + ok(len == len_with_null, "should return length with terminating 0"); + + lstrcpyA(buf, "foo"); + len = GetSystemDirectoryA(buf, len_with_null); + ok(lstrcmpA(buf, "foo") != 0, "should touch the buffer"); + ok(len == lstrlenA(buf), "returned length should be equal to the length of string"); + ok(len == (len_with_null - 1), "should return length without terminating 0"); +} + +static void test_GetSystemDirectoryW(void) +{ + UINT len, len_with_null; + WCHAR buf[MAX_PATH]; + static const WCHAR fooW[] = {'f','o','o',0}; + + lstrcpyW(buf, fooW); + len_with_null = GetSystemDirectoryW(buf, 1); + ok(lstrcmpW(buf, fooW) == 0, "should not touch the buffer"); + ok(len_with_null <= MAX_PATH, "should fit into MAX_PATH"); + + lstrcpyW(buf, fooW); + len = GetSystemDirectoryW(buf, len_with_null - 1); + ok(lstrcmpW(buf, fooW) == 0, "should not touch the buffer"); + ok(len == len_with_null, "should return length with terminating 0"); + + lstrcpyW(buf, fooW); + len = GetSystemDirectoryW(buf, len_with_null); + ok(lstrcmpW(buf, fooW) != 0, "should touch the buffer"); + ok(len == lstrlenW(buf), "returned length should be equal to the length of string"); + ok(len == (len_with_null - 1), "should return length without terminating 0"); +} + +START_TEST(directory) +{ + test_GetWindowsDirectoryA(); + test_GetWindowsDirectoryW(); + test_GetSystemDirectoryA(); + test_GetSystemDirectoryW(); +} diff --git a/dlls/kernel/tests/kernel32_test.spec b/dlls/kernel/tests/kernel32_test.spec new file mode 100644 index 00000000000..ba8dcd0d248 --- /dev/null +++ b/dlls/kernel/tests/kernel32_test.spec @@ -0,0 +1,5 @@ +name kernel32_test +type win32 +mode cuiexe + +import kernel32.dll