scrrun/tests: Add IFilesystem3::CopyFolder tests.

oldstable
Piotr Caban 2013-07-30 11:32:27 +02:00 committed by Alexandre Julliard
parent a20c9738ee
commit f4e4a608cc
1 changed files with 125 additions and 0 deletions

View File

@ -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);