Piotr Caban : scrrun/tests: Add IFilesystem3::CopyFolder tests.

Alexandre Julliard julliard at winehq.org
Tue Jul 30 14:14:21 CDT 2013


Module: wine
Branch: master
Commit: f4e4a608cc157275b610eea1093f5e33123dbfce
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f4e4a608cc157275b610eea1093f5e33123dbfce

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue Jul 30 11:32:27 2013 +0200

scrrun/tests: Add IFilesystem3::CopyFolder tests.

---

 dlls/scrrun/tests/filesystem.c |  125 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 125 insertions(+), 0 deletions(-)

diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c
index 237c107..0ddbbac 100644
--- a/dlls/scrrun/tests/filesystem.c
+++ b/dlls/scrrun/tests/filesystem.c
@@ -526,6 +526,130 @@ static void test_GetFile(void)
     SysFreeString(path);
 }
 
+static inline BOOL create_file(const WCHAR *name)
+{
+    HANDLE f = CreateFileW(name, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL);
+    CloseHandle(f);
+    return f != INVALID_HANDLE_VALUE;
+}
+
+static inline void create_path(const WCHAR *folder, const WCHAR *name, WCHAR *ret)
+{
+    DWORD len = lstrlenW(folder);
+    memmove(ret, folder, len*sizeof(WCHAR));
+    ret[len] = '\\';
+    memmove(ret+len+1, name, (lstrlenW(name)+1)*sizeof(WCHAR));
+}
+
+static void test_CopyFolder(void)
+{
+    static const WCHAR filesystem3_dir[] = {'f','i','l','e','s','y','s','t','e','m','3','_','t','e','s','t',0};
+    static const WCHAR s1[] = {'s','r','c','1',0};
+    static const WCHAR s[] = {'s','r','c','*',0};
+    static const WCHAR d[] = {'d','s','t',0};
+    static const WCHAR empty[] = {0};
+
+    WCHAR tmp[MAX_PATH];
+    BSTR bsrc, bdst;
+    HRESULT hr;
+
+    if(!CreateDirectoryW(filesystem3_dir, NULL)) {
+        skip("can't create temporary directory\n");
+        return;
+    }
+
+    create_path(filesystem3_dir, s1, tmp);
+    bsrc = SysAllocString(tmp);
+    create_path(filesystem3_dir, d, tmp);
+    bdst = SysAllocString(tmp);
+    hr = IFileSystem3_CopyFile(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == CTL_E_FILENOTFOUND, "CopyFile returned %x, expected CTL_E_FILENOTFOUND\n", hr);
+
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == CTL_E_PATHNOTFOUND, "CopyFolder returned %x, expected CTL_E_PATHNOTFOUND\n", hr);
+
+    ok(create_file(bsrc), "can't create %s file\n", wine_dbgstr_w(bsrc));
+    hr = IFileSystem3_CopyFile(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == S_OK, "CopyFile returned %x, expected S_OK\n", hr);
+
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == CTL_E_PATHNOTFOUND, "CopyFolder returned %x, expected CTL_E_PATHNOTFOUND\n", hr);
+
+    hr = IFileSystem3_DeleteFile(fs3, bsrc, VARIANT_FALSE);
+    ok(hr == S_OK, "DeleteFile returned %x, expected S_OK\n", hr);
+
+    ok(CreateDirectoryW(bsrc, NULL), "can't create %s\n", wine_dbgstr_w(bsrc));
+    hr = IFileSystem3_CopyFile(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == CTL_E_FILENOTFOUND, "CopyFile returned %x, expected CTL_E_FILENOTFOUND\n", hr);
+
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == CTL_E_FILEALREADYEXISTS, "CopyFolder returned %x, expected CTL_E_FILEALREADYEXISTS\n", hr);
+
+    hr = IFileSystem3_DeleteFile(fs3, bdst, VARIANT_TRUE);
+    ok(hr == S_OK, "DeleteFile returned %x, expected S_OK\n", hr);
+
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == S_OK, "CopyFolder returned %x, expected S_OK\n", hr);
+
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == S_OK, "CopyFolder returned %x, expected S_OK\n", hr);
+    create_path(tmp, s1, tmp);
+    ok(GetFileAttributesW(tmp) == INVALID_FILE_ATTRIBUTES,
+            "%s file exists\n", wine_dbgstr_w(tmp));
+
+    create_path(filesystem3_dir, d, tmp);
+    create_path(tmp, empty, tmp);
+    SysFreeString(bdst);
+    bdst = SysAllocString(tmp);
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == S_OK, "CopyFolder returned %x, expected S_OK\n", hr);
+    create_path(tmp, s1, tmp);
+    ok(GetFileAttributesW(tmp) != INVALID_FILE_ATTRIBUTES,
+            "%s directory doesn't exist\n", wine_dbgstr_w(tmp));
+    ok(RemoveDirectoryW(tmp), "can't remove %s directory\n", wine_dbgstr_w(tmp));
+    create_path(filesystem3_dir, d, tmp);
+    SysFreeString(bdst);
+    bdst = SysAllocString(tmp);
+
+
+    create_path(filesystem3_dir, s, tmp);
+    SysFreeString(bsrc);
+    bsrc = SysAllocString(tmp);
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == S_OK, "CopyFolder returned %x, expected S_OK\n", hr);
+    create_path(filesystem3_dir, d, tmp);
+    create_path(tmp, s1, tmp);
+    ok(GetFileAttributesW(tmp) != INVALID_FILE_ATTRIBUTES,
+            "%s directory doesn't exist\n", wine_dbgstr_w(tmp));
+
+    hr = IFileSystem3_DeleteFolder(fs3, bdst, VARIANT_FALSE);
+    ok(hr == S_OK, "DeleteFolder returned %x, expected S_OK\n", hr);
+
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == CTL_E_PATHNOTFOUND, "CopyFolder returned %x, expected CTL_E_PATHNOTFOUND\n", hr);
+
+    create_path(filesystem3_dir, s1, tmp);
+    SysFreeString(bsrc);
+    bsrc = SysAllocString(tmp);
+    create_path(tmp, s1, tmp);
+    ok(create_file(tmp), "can't create %s file\n", wine_dbgstr_w(tmp));
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_FALSE);
+    ok(hr == S_OK, "CopyFolder returned %x, expected S_OK\n", hr);
+
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_FALSE);
+    ok(hr == CTL_E_FILEALREADYEXISTS, "CopyFolder returned %x, expected CTL_E_FILEALREADYEXISTS\n", hr);
+
+    hr = IFileSystem3_CopyFolder(fs3, bsrc, bdst, VARIANT_TRUE);
+    ok(hr == S_OK, "CopyFolder returned %x, expected S_OK\n", hr);
+    SysFreeString(bsrc);
+    SysFreeString(bdst);
+
+    bsrc = SysAllocString(filesystem3_dir);
+    hr = IFileSystem3_DeleteFolder(fs3, bsrc, VARIANT_FALSE);
+    ok(hr == S_OK, "DeleteFolder returned %x, expected S_OK\n", hr);
+    SysFreeString(bsrc);
+}
+
 START_TEST(filesystem)
 {
     HRESULT hr;
@@ -548,6 +672,7 @@ START_TEST(filesystem)
     test_GetBaseName();
     test_GetAbsolutePathName();
     test_GetFile();
+    test_CopyFolder();
 
     IFileSystem3_Release(fs3);
 




More information about the wine-cvs mailing list