Author: akhaldi Date: Fri Sep 13 10:19:51 2013 New Revision: 60075
URL: http://svn.reactos.org/svn/reactos?rev=60075&view=rev Log: [SCRRUN_WINETEST] * Import from Wine 1.7.1.
Added: trunk/rostests/winetests/scrrun/ trunk/rostests/winetests/scrrun/CMakeLists.txt (with props) trunk/rostests/winetests/scrrun/dictionary.c (with props) trunk/rostests/winetests/scrrun/filesystem.c (with props) trunk/rostests/winetests/scrrun/scrrun.idl (with props) trunk/rostests/winetests/scrrun/testlist.c (with props) Modified: trunk/rostests/winetests/CMakeLists.txt
Modified: trunk/rostests/winetests/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/CMakeLists.txt?r... ============================================================================== --- trunk/rostests/winetests/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/winetests/CMakeLists.txt [iso-8859-1] Fri Sep 13 10:19:51 2013 @@ -72,6 +72,7 @@ add_subdirectory(rsabase) add_subdirectory(rsaenh) add_subdirectory(schannel) +add_subdirectory(scrrun) add_subdirectory(secur32) add_subdirectory(serialui) add_subdirectory(services)
Added: trunk/rostests/winetests/scrrun/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/scrrun/CMakeList... ============================================================================== --- trunk/rostests/winetests/scrrun/CMakeLists.txt (added) +++ trunk/rostests/winetests/scrrun/CMakeLists.txt [iso-8859-1] Fri Sep 13 10:19:51 2013 @@ -0,0 +1,17 @@ + +add_definitions( + -D__ROS_LONG64__ + -DUSE_WINE_TODOS) + +list(APPEND SOURCE + dictionary.c + filesystem.c + testlist.c) + +add_executable(scrrun_winetest ${SOURCE}) +add_idl_headers(scrrun_idlheader_test scrrun.idl) +add_dependencies(scrrun_winetest scrrun_idlheader_test) +target_link_libraries(scrrun_winetest uuid) +set_module_type(scrrun_winetest win32cui) +add_importlibs(scrrun_winetest ole32 oleaut32 msvcrt kernel32) +add_cd_file(TARGET scrrun_winetest DESTINATION reactos/bin FOR all)
Propchange: trunk/rostests/winetests/scrrun/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rostests/winetests/scrrun/dictionary.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/scrrun/dictionar... ============================================================================== --- trunk/rostests/winetests/scrrun/dictionary.c (added) +++ trunk/rostests/winetests/scrrun/dictionary.c [iso-8859-1] Fri Sep 13 10:19:51 2013 @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2012 Alistair Leslie-Hughes + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define COBJMACROS +#include <stdio.h> + +#include "windows.h" +#include "ole2.h" +#include "oleauto.h" +#include "dispex.h" + +#include "wine/test.h" + +#include "scrrun.h" + +static void test_interfaces(void) +{ + static const WCHAR key_add[] = {'a', 0}; + static const WCHAR key_add_value[] = {'a', 0}; + static const WCHAR key_non_exist[] = {'b', 0}; + HRESULT hr; + IDispatch *disp; + IDispatchEx *dispex; + IDictionary *dict; + IObjectWithSite *site; + VARIANT key, value; + VARIANT_BOOL exists; + LONG count = 0; + + hr = CoCreateInstance(&CLSID_Dictionary, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, + &IID_IDispatch, (void**)&disp); + if(FAILED(hr)) { + win_skip("Could not create FileSystem object: %08x\n", hr); + return; + } + + VariantInit(&key); + VariantInit(&value); + + hr = IDispatch_QueryInterface(disp, &IID_IDictionary, (void**)&dict); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + + hr = IDispatch_QueryInterface(disp, &IID_IObjectWithSite, (void**)&site); + ok(hr == E_NOINTERFACE, "got 0x%08x, expected 0x%08x\n", hr, E_NOINTERFACE); + + hr = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex); + ok(hr == E_NOINTERFACE, "got 0x%08x, expected 0x%08x\n", hr, E_NOINTERFACE); + + V_VT(&key) = VT_BSTR; + V_BSTR(&key) = SysAllocString(key_add); + V_VT(&value) = VT_BSTR; + V_BSTR(&value) = SysAllocString(key_add_value); + hr = IDictionary_Add(dict, &key, &value); + todo_wine ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + VariantClear(&value); + + exists = VARIANT_FALSE; + hr = IDictionary_Exists(dict, &key, &exists); + todo_wine ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + todo_wine ok(exists == VARIANT_TRUE, "Expected TRUE but got FALSE.\n"); + VariantClear(&key); + + exists = VARIANT_TRUE; + V_VT(&key) = VT_BSTR; + V_BSTR(&key) = SysAllocString(key_non_exist); + hr = IDictionary_Exists(dict, &key, &exists); + todo_wine ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + todo_wine ok(exists == VARIANT_FALSE, "Expected FALSE but got TRUE.\n"); + VariantClear(&key); + + hr = IDictionary_get_Count(dict, &count); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + todo_wine ok(count == 1, "got %d, expected 1\n", count); + + IDictionary_Release(dict); + IDispatch_Release(disp); +} + +START_TEST(dictionary) +{ + CoInitialize(NULL); + + test_interfaces(); + + + CoUninitialize(); +}
Propchange: trunk/rostests/winetests/scrrun/dictionary.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rostests/winetests/scrrun/filesystem.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/scrrun/filesyste... ============================================================================== --- trunk/rostests/winetests/scrrun/filesystem.c (added) +++ trunk/rostests/winetests/scrrun/filesystem.c [iso-8859-1] Fri Sep 13 10:19:51 2013 @@ -0,0 +1,681 @@ +/* + * + * Copyright 2012 Alistair Leslie-Hughes + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define COBJMACROS +#include <stdio.h> + +#include "windows.h" +#include "ole2.h" +#include "olectl.h" +#include "oleauto.h" +#include "dispex.h" + +#include "wine/test.h" + +#include "initguid.h" +#include "scrrun.h" + +static IFileSystem3 *fs3; + +static void test_interfaces(void) +{ + static const WCHAR nonexistent_dirW[] = { + 'c', ':', '\', 'N', 'o', 'n', 'e', 'x', 'i', 's', 't', 'e', 'n', 't', 0}; + static const WCHAR pathW[] = {'p','a','t','h',0}; + static const WCHAR file_kernel32W[] = { + '\', 'k', 'e', 'r', 'n', 'e', 'l', '3', '2', '.', 'd', 'l', 'l', 0}; + HRESULT hr; + IDispatch *disp; + IDispatchEx *dispex; + IObjectWithSite *site; + VARIANT_BOOL b; + BSTR path; + WCHAR windows_path[MAX_PATH]; + WCHAR file_path[MAX_PATH]; + + IFileSystem3_QueryInterface(fs3, &IID_IDispatch, (void**)&disp); + + GetSystemDirectoryW(windows_path, MAX_PATH); + lstrcpyW(file_path, windows_path); + lstrcatW(file_path, file_kernel32W); + + hr = IDispatch_QueryInterface(disp, &IID_IObjectWithSite, (void**)&site); + ok(hr == E_NOINTERFACE, "got 0x%08x, expected 0x%08x\n", hr, E_NOINTERFACE); + + hr = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex); + ok(hr == E_NOINTERFACE, "got 0x%08x, expected 0x%08x\n", hr, E_NOINTERFACE); + + b = VARIANT_TRUE; + hr = IFileSystem3_FileExists(fs3, NULL, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_FALSE, "got %x\n", b); + + hr = IFileSystem3_FileExists(fs3, NULL, NULL); + ok(hr == E_POINTER, "got 0x%08x, expected 0x%08x\n", hr, E_POINTER); + + path = SysAllocString(pathW); + b = VARIANT_TRUE; + hr = IFileSystem3_FileExists(fs3, path, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_FALSE, "got %x\n", b); + SysFreeString(path); + + path = SysAllocString(file_path); + b = VARIANT_FALSE; + hr = IFileSystem3_FileExists(fs3, path, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_TRUE, "got %x\n", b); + SysFreeString(path); + + path = SysAllocString(windows_path); + b = VARIANT_TRUE; + hr = IFileSystem3_FileExists(fs3, path, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_FALSE, "got %x\n", b); + SysFreeString(path); + + /* Folder Exists */ + hr = IFileSystem3_FolderExists(fs3, NULL, NULL); + ok(hr == E_POINTER, "got 0x%08x, expected 0x%08x\n", hr, E_POINTER); + + path = SysAllocString(windows_path); + hr = IFileSystem3_FolderExists(fs3, path, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_TRUE, "Folder doesn't exists\n"); + SysFreeString(path); + + path = SysAllocString(nonexistent_dirW); + hr = IFileSystem3_FolderExists(fs3, path, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_FALSE, "Folder exists\n"); + SysFreeString(path); + + path = SysAllocString(file_path); + hr = IFileSystem3_FolderExists(fs3, path, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_FALSE, "Folder exists\n"); + SysFreeString(path); + + IDispatch_Release(disp); +} + +static void test_createfolder(void) +{ + HRESULT hr; + WCHAR pathW[MAX_PATH]; + BSTR path; + IFolder *folder; + + /* create existing directory */ + GetCurrentDirectoryW(sizeof(pathW)/sizeof(WCHAR), pathW); + path = SysAllocString(pathW); + folder = (void*)0xdeabeef; + hr = IFileSystem3_CreateFolder(fs3, path, &folder); + ok(hr == CTL_E_FILEALREADYEXISTS, "got 0x%08x\n", hr); + ok(folder == NULL, "got %p\n", folder); + SysFreeString(path); +} + +static void test_textstream(void) +{ + static WCHAR testfileW[] = {'t','e','s','t','f','i','l','e','.','t','x','t',0}; + ITextStream *stream; + VARIANT_BOOL b; + HANDLE file; + HRESULT hr; + BSTR name, data; + + file = CreateFileW(testfileW, GENERIC_READ, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + CloseHandle(file); + + name = SysAllocString(testfileW); + b = VARIANT_FALSE; + hr = IFileSystem3_FileExists(fs3, name, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_TRUE, "got %x\n", b); + + hr = IFileSystem3_OpenTextFile(fs3, name, ForReading, VARIANT_FALSE, TristateFalse, &stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + + b = 10; + hr = ITextStream_get_AtEndOfStream(stream, &b); +todo_wine { + ok(hr == S_FALSE || broken(hr == S_OK), "got 0x%08x\n", hr); + ok(b == VARIANT_TRUE, "got 0x%x\n", b); +} + ITextStream_Release(stream); + + hr = IFileSystem3_OpenTextFile(fs3, name, ForWriting, VARIANT_FALSE, TristateFalse, &stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + + b = 10; + hr = ITextStream_get_AtEndOfStream(stream, &b); +todo_wine { + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + ok(b == VARIANT_TRUE || broken(b == 10), "got 0x%x\n", b); +} + b = 10; + hr = ITextStream_get_AtEndOfLine(stream, &b); +todo_wine { + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + ok(b == VARIANT_FALSE || broken(b == 10), "got 0x%x\n", b); +} + hr = ITextStream_Read(stream, 1, &data); + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + + hr = ITextStream_ReadLine(stream, &data); + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + + hr = ITextStream_ReadAll(stream, &data); + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + + ITextStream_Release(stream); + + hr = IFileSystem3_OpenTextFile(fs3, name, ForAppending, VARIANT_FALSE, TristateFalse, &stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + SysFreeString(name); + + b = 10; + hr = ITextStream_get_AtEndOfStream(stream, &b); +todo_wine { + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + ok(b == VARIANT_TRUE || broken(b == 10), "got 0x%x\n", b); +} + b = 10; + hr = ITextStream_get_AtEndOfLine(stream, &b); +todo_wine { + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + ok(b == VARIANT_FALSE || broken(b == 10), "got 0x%x\n", b); +} + hr = ITextStream_Read(stream, 1, &data); + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + + hr = ITextStream_ReadLine(stream, &data); + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + + hr = ITextStream_ReadAll(stream, &data); + ok(hr == CTL_E_BADFILEMODE, "got 0x%08x\n", hr); + + ITextStream_Release(stream); + + DeleteFileW(testfileW); +} + +static void test_GetFileVersion(void) +{ + static const WCHAR k32W[] = {'\','k','e','r','n','e','l','3','2','.','d','l','l',0}; + static const WCHAR k33W[] = {'\','k','e','r','n','e','l','3','3','.','d','l','l',0}; + WCHAR pathW[MAX_PATH], filenameW[MAX_PATH]; + BSTR path, version; + HRESULT hr; + + GetSystemDirectoryW(pathW, sizeof(pathW)/sizeof(WCHAR)); + + lstrcpyW(filenameW, pathW); + lstrcatW(filenameW, k32W); + + path = SysAllocString(filenameW); + hr = IFileSystem3_GetFileVersion(fs3, path, &version); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(*version != 0, "got %s\n", wine_dbgstr_w(version)); + SysFreeString(version); + SysFreeString(path); + + lstrcpyW(filenameW, pathW); + lstrcatW(filenameW, k33W); + + path = SysAllocString(filenameW); + version = (void*)0xdeadbeef; + hr = IFileSystem3_GetFileVersion(fs3, path, &version); + ok(broken(hr == S_OK) || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), "got 0x%08x\n", hr); + if (hr == S_OK) + { + ok(*version == 0, "got %s\n", wine_dbgstr_w(version)); + SysFreeString(version); + } + else + ok(version == (void*)0xdeadbeef, "got %p\n", version); + SysFreeString(path); +} + +static void test_GetParentFolderName(void) +{ + static const WCHAR path1[] = {'a',0}; + static const WCHAR path2[] = {'a','/','a','/','a',0}; + static const WCHAR path3[] = {'a','\','a','\','a',0}; + static const WCHAR path4[] = {'a','/','a','/','/','\','\',0}; + static const WCHAR path5[] = {'c',':','\','\','a',0}; + static const WCHAR path6[] = {'a','c',':','\','a',0}; + static const WCHAR result2[] = {'a','/','a',0}; + static const WCHAR result3[] = {'a','\','a',0}; + static const WCHAR result4[] = {'a',0}; + static const WCHAR result5[] = {'c',':','\',0}; + static const WCHAR result6[] = {'a','c',':',0}; + + static const struct { + const WCHAR *path; + const WCHAR *result; + } tests[] = { + {NULL, NULL}, + {path1, NULL}, + {path2, result2}, + {path3, result3}, + {path4, result4}, + {path5, result5}, + {path6, result6} + }; + + BSTR path, result; + HRESULT hr; + int i; + + hr = IFileSystem3_GetParentFolderName(fs3, NULL, NULL); + ok(hr == E_POINTER, "GetParentFolderName returned %x, expected E_POINTER\n", hr); + + for(i=0; i<sizeof(tests)/sizeof(tests[0]); i++) { + result = (BSTR)0xdeadbeef; + path = tests[i].path ? SysAllocString(tests[i].path) : NULL; + hr = IFileSystem3_GetParentFolderName(fs3, path, &result); + ok(hr == S_OK, "%d) GetParentFolderName returned %x, expected S_OK\n", i, hr); + if(!tests[i].result) + ok(!result, "%d) result = %s\n", i, wine_dbgstr_w(result)); + else + ok(!lstrcmpW(result, tests[i].result), "%d) result = %s\n", i, wine_dbgstr_w(result)); + SysFreeString(path); + SysFreeString(result); + } +} + +static void test_GetFileName(void) +{ + static const WCHAR path1[] = {'a',0}; + static const WCHAR path2[] = {'a','/','a','.','b',0}; + static const WCHAR path3[] = {'a','\',0}; + static const WCHAR path4[] = {'c',':',0}; + static const WCHAR path5[] = {'/','\',0}; + static const WCHAR result2[] = {'a','.','b',0}; + static const WCHAR result3[] = {'a',0}; + + static const struct { + const WCHAR *path; + const WCHAR *result; + } tests[] = { + {NULL, NULL}, + {path1, path1}, + {path2, result2}, + {path3, result3}, + {path4, NULL}, + {path5, NULL} + }; + + BSTR path, result; + HRESULT hr; + int i; + + hr = IFileSystem3_GetFileName(fs3, NULL, NULL); + ok(hr == E_POINTER, "GetFileName returned %x, expected E_POINTER\n", hr); + + for(i=0; i<sizeof(tests)/sizeof(tests[0]); i++) { + result = (BSTR)0xdeadbeef; + path = tests[i].path ? SysAllocString(tests[i].path) : NULL; + hr = IFileSystem3_GetFileName(fs3, path, &result); + ok(hr == S_OK, "%d) GetFileName returned %x, expected S_OK\n", i, hr); + if(!tests[i].result) + ok(!result, "%d) result = %s\n", i, wine_dbgstr_w(result)); + else + ok(!lstrcmpW(result, tests[i].result), "%d) result = %s\n", i, wine_dbgstr_w(result)); + SysFreeString(path); + SysFreeString(result); + } +} + +static void test_GetBaseName(void) +{ + static const WCHAR path1[] = {'a',0}; + static const WCHAR path2[] = {'a','/','a','.','b','.','c',0}; + static const WCHAR path3[] = {'a','.','b','\',0}; + static const WCHAR path4[] = {'c',':',0}; + static const WCHAR path5[] = {'/','\',0}; + static const WCHAR path6[] = {'.','a',0}; + static const WCHAR result1[] = {'a',0}; + static const WCHAR result2[] = {'a','.','b',0}; + static const WCHAR result6[] = {0}; + + static const struct { + const WCHAR *path; + const WCHAR *result; + } tests[] = { + {NULL, NULL}, + {path1, result1}, + {path2, result2}, + {path3, result1}, + {path4, NULL}, + {path5, NULL}, + {path6, result6} + }; + + BSTR path, result; + HRESULT hr; + int i; + + hr = IFileSystem3_GetBaseName(fs3, NULL, NULL); + ok(hr == E_POINTER, "GetBaseName returned %x, expected E_POINTER\n", hr); + + for(i=0; i<sizeof(tests)/sizeof(tests[0]); i++) { + result = (BSTR)0xdeadbeef; + path = tests[i].path ? SysAllocString(tests[i].path) : NULL; + hr = IFileSystem3_GetBaseName(fs3, path, &result); + ok(hr == S_OK, "%d) GetBaseName returned %x, expected S_OK\n", i, hr); + if(!tests[i].result) + ok(!result, "%d) result = %s\n", i, wine_dbgstr_w(result)); + else + ok(!lstrcmpW(result, tests[i].result), "%d) result = %s\n", i, wine_dbgstr_w(result)); + SysFreeString(path); + SysFreeString(result); + } +} + +static void test_GetAbsolutePathName(void) +{ + static const WCHAR dir1[] = {'t','e','s','t','_','d','i','r','1',0}; + static const WCHAR dir2[] = {'t','e','s','t','_','d','i','r','2',0}; + static const WCHAR dir_match1[] = {'t','e','s','t','_','d','i','r','*',0}; + static const WCHAR dir_match2[] = {'t','e','s','t','_','d','i','*',0}; + static const WCHAR cur_dir[] = {'.',0}; + + WIN32_FIND_DATAW fdata; + HANDLE find; + WCHAR buf[MAX_PATH], buf2[MAX_PATH]; + BSTR path, result; + HRESULT hr; + + hr = IFileSystem3_GetAbsolutePathName(fs3, NULL, NULL); + ok(hr == E_POINTER, "GetAbsolutePathName returned %x, expected E_POINTER\n", hr); + + hr = IFileSystem3_GetAbsolutePathName(fs3, NULL, &result); + ok(hr == S_OK, "GetAbsolutePathName returned %x, expected S_OK\n", hr); + GetFullPathNameW(cur_dir, MAX_PATH, buf, NULL); + ok(!lstrcmpW(buf, result), "result = %s, expected %s\n", wine_dbgstr_w(result), wine_dbgstr_w(buf)); + SysFreeString(result); + + find = FindFirstFileW(dir_match2, &fdata); + if(find != INVALID_HANDLE_VALUE) { + skip("GetAbsolutePathName tests\n"); + FindClose(find); + return; + } + + path = SysAllocString(dir_match1); + hr = IFileSystem3_GetAbsolutePathName(fs3, path, &result); + ok(hr == S_OK, "GetAbsolutePathName returned %x, expected S_OK\n", hr); + GetFullPathNameW(dir_match1, MAX_PATH, buf2, NULL); + ok(!lstrcmpW(buf2, result), "result = %s, expected %s\n", wine_dbgstr_w(result), wine_dbgstr_w(buf2)); + SysFreeString(result); + + ok(CreateDirectoryW(dir1, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(dir1)); + hr = IFileSystem3_GetAbsolutePathName(fs3, path, &result); + ok(hr == S_OK, "GetAbsolutePathName returned %x, expected S_OK\n", hr); + GetFullPathNameW(dir1, MAX_PATH, buf, NULL); + ok(!lstrcmpW(buf, result) || broken(!lstrcmpW(buf2, result)), "result = %s, expected %s\n", + wine_dbgstr_w(result), wine_dbgstr_w(buf)); + SysFreeString(result); + + ok(CreateDirectoryW(dir2, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(dir2)); + hr = IFileSystem3_GetAbsolutePathName(fs3, path, &result); + ok(hr == S_OK, "GetAbsolutePathName returned %x, expected S_OK\n", hr); + if(!lstrcmpW(buf, result) || !lstrcmpW(buf2, result)) { + ok(!lstrcmpW(buf, result) || broken(!lstrcmpW(buf2, result)), "result = %s, expected %s\n", + wine_dbgstr_w(result), wine_dbgstr_w(buf)); + }else { + GetFullPathNameW(dir2, MAX_PATH, buf, NULL); + ok(!lstrcmpW(buf, result), "result = %s, expected %s\n", + wine_dbgstr_w(result), wine_dbgstr_w(buf)); + } + SysFreeString(result); + + SysFreeString(path); + path = SysAllocString(dir_match2); + hr = IFileSystem3_GetAbsolutePathName(fs3, path, &result); + ok(hr == S_OK, "GetAbsolutePathName returned %x, expected S_OK\n", hr); + GetFullPathNameW(dir_match2, MAX_PATH, buf, NULL); + ok(!lstrcmpW(buf, result), "result = %s, expected %s\n", wine_dbgstr_w(result), wine_dbgstr_w(buf)); + SysFreeString(result); + SysFreeString(path); + + RemoveDirectoryW(dir1); + RemoveDirectoryW(dir2); +} + +static void test_GetFile(void) +{ + static const WCHAR get_file[] = {'g','e','t','_','f','i','l','e','.','t','s','t',0}; + + BSTR path = SysAllocString(get_file); + FileAttribute fa; + VARIANT size; + DWORD gfa; + IFile *file; + HRESULT hr; + HANDLE hf; + + hr = IFileSystem3_GetFile(fs3, path, NULL); + ok(hr == E_POINTER, "GetFile returned %x, expected E_POINTER\n", hr); + hr = IFileSystem3_GetFile(fs3, NULL, &file); + ok(hr == E_INVALIDARG, "GetFile returned %x, expected E_INVALIDARG\n", hr); + + if(GetFileAttributesW(path) != INVALID_FILE_ATTRIBUTES) { + skip("File already exists, skipping GetFile tests\n"); + SysFreeString(path); + return; + } + + file = (IFile*)0xdeadbeef; + hr = IFileSystem3_GetFile(fs3, path, &file); + ok(!file, "file != NULL\n"); + ok(hr == CTL_E_FILENOTFOUND, "GetFile returned %x, expected CTL_E_FILENOTFOUND\n", hr); + + hf = CreateFileW(path, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_READONLY, NULL); + if(hf == INVALID_HANDLE_VALUE) { + skip("Can't create temporary file\n"); + SysFreeString(path); + return; + } + CloseHandle(hf); + + hr = IFileSystem3_GetFile(fs3, path, &file); + ok(hr == S_OK, "GetFile returned %x, expected S_OK\n", hr); + + hr = IFile_get_Attributes(file, &fa); + gfa = GetFileAttributesW(get_file) & (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | + FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_ARCHIVE | + FILE_ATTRIBUTE_REPARSE_POINT | FILE_ATTRIBUTE_COMPRESSED); + ok(hr == S_OK, "get_Attributes returned %x, expected S_OK\n", hr); + ok(fa == gfa, "fa = %x, expected %x\n", fa, gfa); + + hr = IFile_get_Size(file, &size); + ok(hr == S_OK, "get_Size returned %x, expected S_OK\n", hr); + ok(V_VT(&size) == VT_I4, "V_VT(&size) = %d, expected VT_I4\n", V_VT(&size)); + ok(V_I4(&size) == 0, "V_I4(&size) = %d, expected 0\n", V_I4(&size)); + IFile_Release(file); + + hr = IFileSystem3_DeleteFile(fs3, path, FALSE); + ok(hr==CTL_E_PERMISSIONDENIED || broken(hr==S_OK), + "DeleteFile returned %x, expected CTL_E_PERMISSIONDENIED\n", hr); + if(hr != S_OK) { + hr = IFileSystem3_DeleteFile(fs3, path, TRUE); + ok(hr == S_OK, "DeleteFile returned %x, expected S_OK\n", hr); + } + hr = IFileSystem3_DeleteFile(fs3, path, TRUE); + ok(hr == CTL_E_FILENOTFOUND, "DeleteFile returned %x, expected CTL_E_FILENOTFOUND\n", hr); + + 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; + + CoInitialize(NULL); + + hr = CoCreateInstance(&CLSID_FileSystemObject, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, + &IID_IFileSystem3, (void**)&fs3); + if(FAILED(hr)) { + win_skip("Could not create FileSystem object: %08x\n", hr); + return; + } + + test_interfaces(); + test_createfolder(); + test_textstream(); + test_GetFileVersion(); + test_GetParentFolderName(); + test_GetFileName(); + test_GetBaseName(); + test_GetAbsolutePathName(); + test_GetFile(); + test_CopyFolder(); + + IFileSystem3_Release(fs3); + + CoUninitialize(); +}
Propchange: trunk/rostests/winetests/scrrun/filesystem.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rostests/winetests/scrrun/scrrun.idl URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/scrrun/scrrun.id... ============================================================================== --- trunk/rostests/winetests/scrrun/scrrun.idl (added) +++ trunk/rostests/winetests/scrrun/scrrun.idl [iso-8859-1] Fri Sep 13 10:19:51 2013 @@ -0,0 +1,692 @@ +/* + * Copyright (C) 2012 Alistair Leslie-Hughes + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +import "unknwn.idl"; +import "objidl.idl"; +import "oaidl.idl"; + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef CopyFile") +cpp_quote("#undef DeleteFile") +cpp_quote("#undef MoveFile") +cpp_quote("#endif") + +[ + uuid(420B2830-E718-11CF-893D-00A0C9054228), + version(1.0) +] +library Scripting +{ + importlib("stdole2.tlb"); + + interface IDictionary; + interface IDrive; + interface IDriveCollection; + interface IFile; + interface IFileCollection; + interface IFileSystem; + interface IFileSystem3; + interface IFolder; + interface IFolderCollection; + interface IScriptEncoder; + interface ITextStream; + + typedef enum CompareMethod + { + BinaryCompare = 0, + TextCompare = 1, + DatabaseCompare = 2 + } CompareMethod; + + typedef enum IOMode + { + ForReading = 1, + ForWriting = 2, + ForAppending = 8 + } IOMode; + + typedef enum Tristate + { + TristateTrue = 0xffffffff, + TristateFalse = 0, + TristateUseDefault = 0xfffffffe, + TristateMixed = 0xfffffffe + } Tristate; + + typedef enum FileAttribute + { + Normal = 0, + ReadOnly = 1, + Hidden = 2, + System = 4, + Volume = 8, + Directory = 16, + Archive = 32, + Alias = 1024, + Compressed = 2048 + } FileAttribute; + + typedef enum SpecialFolderConst + { + WindowsFolder = 0, + SystemFolder = 1, + TemporaryFolder = 2 + } SpecialFolderConst; + + typedef enum DriveTypeConst + { + UnknownType = 0, + Removable = 1, + Fixed = 2, + Remote = 3, + CDRom = 4, + RamDisk = 5 + } DriveTypeConst; + + typedef enum StandardStreamTypes + { + StdIn = 0, + StdOut = 1, + StdErr = 2 + } StandardStreamTypes; + + [ + odl, + uuid(42C642C1-97E1-11CF-978F-00A02463E06F), + hidden, + dual, + oleautomation + ] + interface IDictionary : IDispatch + { + [id(00000000), propputref] + HRESULT Item([in] VARIANT* Key, [in] VARIANT* pRetItem); + + [id(00000000), propput] + HRESULT Item([in] VARIANT* Key, [in] VARIANT* pRetItem); + + [id(00000000), propget] + HRESULT Item([in] VARIANT* Key, [out, retval] VARIANT* pRetItem); + + [id(0x00000001)] + HRESULT Add([in] VARIANT* Key, [in] VARIANT* Item); + + [id(0x00000002), propget] + HRESULT Count([out, retval] long* pCount); + + [id(0x00000003)] + HRESULT Exists([in] VARIANT* Key, [out, retval] VARIANT_BOOL* pExists); + + [id(0x00000004)] + HRESULT Items([out, retval] VARIANT* pItemsArray); + + [id(0x00000005), propput] + HRESULT Key([in] VARIANT* Key, [in] VARIANT* rhs); + + [id(0x00000006)] + HRESULT Keys([out, retval] VARIANT* pKeysArray); + + [id(0x00000007)] + HRESULT Remove([in] VARIANT* Key); + + [id(0x00000008)] + HRESULT RemoveAll(); + + [id(0x00000009), propput] + HRESULT CompareMode([in] CompareMethod pcomp); + + [id(0x00000009), propget] + HRESULT CompareMode([out, retval] CompareMethod* pcomp); + + [id(DISPID_NEWENUM), restricted] + HRESULT _NewEnum([out, retval] IUnknown** ppunk); + + [id(0x0000000a), propget, hidden] + HRESULT HashVal([in] VARIANT* Key, [out, retval] VARIANT* HashVal); + } + + [ + odl, + uuid(0AB5A3D0-E5B6-11D0-ABF5-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFileSystem : IDispatch + { + [id(0x0000271a), propget] + HRESULT Drives([out, retval] IDriveCollection** ppdrives); + + [id(0x00002710)] + HRESULT BuildPath([in] BSTR Path, [in] BSTR Name, [out, retval] BSTR* pbstrResult); + + [id(0x00002714)] + HRESULT GetDriveName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002715)] + HRESULT GetParentFolderName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002716)] + HRESULT GetFileName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002717)] + HRESULT GetBaseName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002718)] + HRESULT GetExtensionName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002712)] + HRESULT GetAbsolutePathName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002713)] + HRESULT GetTempName([out, retval] BSTR* pbstrResult); + + [id(0x0000271f)] + HRESULT DriveExists([in] BSTR DriveSpec, [out, retval] VARIANT_BOOL* pfExists); + + [id(0x00002720)] + HRESULT FileExists([in] BSTR FileSpec, [out, retval] VARIANT_BOOL* pfExists); + + [id(0x00002721)] + HRESULT FolderExists([in] BSTR FolderSpec, [out, retval] VARIANT_BOOL* pfExists); + + [id(0x0000271b)] + HRESULT GetDrive([in] BSTR DriveSpec, [out, retval] IDrive** ppdrive); + + [id(0x0000271c)] + HRESULT GetFile([in] BSTR FilePath, [out, retval] IFile** ppfile); + + [id(0x0000271d)] + HRESULT GetFolder([in] BSTR FolderPath, [out, retval] IFolder** ppfolder); + + [id(0x0000271e)] + HRESULT GetSpecialFolder([in] SpecialFolderConst SpecialFolder, [out, retval] IFolder** ppfolder); + + [id(0x000004b0)] + HRESULT DeleteFile([in] BSTR FileSpec, [in, optional, defaultvalue(0)] VARIANT_BOOL Force); + + [id(0x000004b1)] + HRESULT DeleteFolder([in] BSTR FolderSpec, [in, optional, defaultvalue(0)] VARIANT_BOOL Force); + + [id(0x000004b4), helpstring("Move a file"), helpcontext(0x00214bab)] + HRESULT MoveFile([in] BSTR Source, [in] BSTR Destination); + + [id(0x000004b5)] + HRESULT MoveFolder([in] BSTR Source, [in] BSTR Destination); + + [id(0x000004b2)] + HRESULT CopyFile([in] BSTR Source, [in] BSTR Destination, + [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); + + [id(0x000004b3)] + HRESULT CopyFolder([in] BSTR Source, [in] BSTR Destination, + [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); + + [id(0x00000460)] + HRESULT CreateFolder([in] BSTR Path, [out, retval] IFolder** ppfolder); + + [id(0x0000044d)] + HRESULT CreateTextFile([in] BSTR FileName, [in, optional, defaultvalue(-1)] VARIANT_BOOL Overwrite, + [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); + + [id(0x0000044c)] + HRESULT OpenTextFile([in] BSTR FileName, [in, optional, defaultvalue(1)] IOMode IOMode, + [in, optional, defaultvalue(0)] VARIANT_BOOL Create, + [in, optional, defaultvalue(0)] Tristate Format, + [out, retval] ITextStream** ppts); + } + + [ + odl, + uuid(C7C3F5A1-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IDriveCollection : IDispatch { + [id(00000000)] + HRESULT Item([in] VARIANT Key, [out, retval] IDrive** ppdrive); + + [id(DISPID_NEWENUM), propget, restricted, hidden] + HRESULT _NewEnum([out, retval] IUnknown** ppenum); + + [id(0x00000001), propget] + HRESULT Count([out, retval] long* plCount); + } + + [ + odl, + uuid(C7C3F5A0-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IDrive : IDispatch + { + [id(00000000), propget] + HRESULT Path([out, retval] BSTR* pbstrPath); + + [id(0x00002710), propget] + HRESULT DriveLetter([out, retval] BSTR* pbstrLetter) +; + [id(0x00002711), propget] + HRESULT ShareName([out, retval] BSTR* pbstrShareName); + + [id(0x00002712), propget] + HRESULT DriveType([out, retval] DriveTypeConst* pdt); + + [id(0x00002713), propget] + HRESULT RootFolder([out, retval] IFolder** ppfolder); + + [id(0x00002715), propget] + HRESULT AvailableSpace([out, retval] VARIANT* pvarAvail); + + [id(0x00002714), propget] + HRESULT FreeSpace([out, retval] VARIANT* pvarFree); + + [id(0x00002716), propget] + HRESULT TotalSize([out, retval] VARIANT* pvarTotal); + + [id(0x00002717), propget] + HRESULT VolumeName([out, retval] BSTR* pbstrName); + + [id(0x00002717), propput] + HRESULT VolumeName([in] BSTR pbstrName); + + [id(0x00002718), propget] + HRESULT FileSystem([out, retval] BSTR* pbstrFileSystem); + + [id(0x00002719), propget] + HRESULT SerialNumber([out, retval] long* pulSerialNumber); + + [id(0x0000271a), propget] + HRESULT IsReady([out, retval] VARIANT_BOOL* pfReady); + } + + [ + odl, + uuid(C7C3F5A2-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFolder : IDispatch + { + [id(00000000), propget] + HRESULT Path([out, retval] BSTR* pbstrPath); + + [id(0x000003e8), propget] + HRESULT Name([out, retval] BSTR* pbstrName); + + [id(0x000003e8), propput] + HRESULT Name([in] BSTR pbstrName); + + [id(0x000003ea), propget] + HRESULT ShortPath([out, retval] BSTR* pbstrPath); + + [id(0x000003e9), propget] + HRESULT ShortName([out, retval] BSTR* pbstrName); + + [id(0x000003ec), propget] + HRESULT Drive([out, retval] IDrive** ppdrive); + + [id(0x000003ed), propget] + HRESULT ParentFolder([out, retval] IFolder** ppfolder); + + [id(0x000003eb), propget] + HRESULT Attributes([out, retval] FileAttribute* pfa); + + [id(0x000003eb), propput] + HRESULT Attributes([in] FileAttribute pfa); + + [id(0x000003ee), propget] + HRESULT DateCreated([out, retval] DATE* pdate); + + [id(0x000003ef), propget] + HRESULT DateLastModified([out, retval] DATE* pdate); + + [id(0x000003f0), propget] + HRESULT DateLastAccessed([out, retval] DATE* pdate); + + [id(0x000003f2), propget] + HRESULT Type([out, retval] BSTR* pbstrType); + + [id(0x000004b1)] + HRESULT Delete([in, optional, defaultvalue(0)] VARIANT_BOOL Force); + + [id(0x000004b3)] + HRESULT Copy([in] BSTR Destination, [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); + + [id(0x000004b5)] + HRESULT Move([in] BSTR Destination); + + [id(0x00002710), propget] + HRESULT IsRootFolder([out, retval] VARIANT_BOOL* pfRootFolder); + + [id(0x000003f1), propget] + HRESULT Size([out, retval] VARIANT* pvarSize); + + [id(0x00002711), propget] + HRESULT SubFolders([out, retval] IFolderCollection** ppfolders); + + [id(0x00002712), propget] + HRESULT Files([out, retval] IFileCollection** ppfiles); + + [id(0x0000044d)] + HRESULT CreateTextFile([in] BSTR FileName, [in, optional, defaultvalue(-1)] VARIANT_BOOL Overwrite, + [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); + } + + [ + odl, + uuid(C7C3F5A3-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFolderCollection : IDispatch + { + [id(0x00000002)] + HRESULT Add([in] BSTR Name, [out, retval] IFolder** ppfolder); + + [id(00000000), propget] + HRESULT Item([in] VARIANT Key, [out, retval] IFolder** ppfolder); + + [id(DISPID_NEWENUM), propget, restricted, hidden] + HRESULT _NewEnum([out, retval] IUnknown** ppenum); + + [id(0x00000001), propget] + HRESULT Count([out, retval] long* plCount); + } + + [ + odl, + uuid(C7C3F5A5-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFileCollection : IDispatch + { + [id(00000000), propget] + HRESULT Item([in] VARIANT Key, [out, retval] IFile** ppfile); + + [id(DISPID_NEWENUM), propget, restricted, hidden] + HRESULT _NewEnum([out, retval] IUnknown** ppenum); + + [id(0x00000001), propget] + HRESULT Count([out, retval] long* plCount); + } + + [ + odl, + uuid(C7C3F5A4-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFile : IDispatch + { + [id(00000000), propget] + HRESULT Path([out, retval] BSTR* pbstrPath); + + [id(0x000003e8), propget] + HRESULT Name([out, retval] BSTR* pbstrName); + + [id(0x000003e8), propput] + HRESULT Name([in] BSTR pbstrName); + + [id(0x000003ea), propget] + HRESULT ShortPath([out, retval] BSTR* pbstrPath); + + [id(0x000003e9), propget] + HRESULT ShortName([out, retval] BSTR* pbstrName); + + [id(0x000003ec), propget] + HRESULT Drive([out, retval] IDrive** ppdrive); + + [id(0x000003ed), propget] + HRESULT ParentFolder([out, retval] IFolder** ppfolder); + + [id(0x000003eb), propget] + HRESULT Attributes([out, retval] FileAttribute* pfa); + + [id(0x000003eb), propput] + HRESULT Attributes([in] FileAttribute pfa); + + [id(0x000003ee), propget] + HRESULT DateCreated([out, retval] DATE* pdate); + + [id(0x000003ef), propget] + HRESULT DateLastModified([out, retval] DATE* pdate); + + [id(0x000003f0), propget] + HRESULT DateLastAccessed([out, retval] DATE* pdate); + + [id(0x000003f1), propget] + HRESULT Size([out, retval] VARIANT* pvarSize); + + [id(0x000003f2), propget] + HRESULT Type([out, retval] BSTR* pbstrType); + + [id(0x000004b0)] + HRESULT Delete([in, optional, defaultvalue(0)] VARIANT_BOOL Force); + + [id(0x000004b2)] + HRESULT Copy([in] BSTR Destination, [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); + + [id(0x000004b4)] + HRESULT Move([in] BSTR Destination); + + [id(0x0000044c)] + HRESULT OpenAsTextStream([in, optional, defaultvalue(1)] IOMode IOMode, + [in, optional, defaultvalue(0)] Tristate Format, [out, retval] ITextStream** ppts); + } + + [ + odl, + uuid(53BAD8C1-E718-11CF-893D-00A0C9054228), + hidden, + dual, + nonextensible, + oleautomation + ] + interface ITextStream : IDispatch + { + [id(0x00002710), propget] + HRESULT Line([out, retval] long* Line); + + [id(0xfffffdef), propget] + HRESULT Column([out, retval] long* Column); + + [id(0x00002712), propget] + HRESULT AtEndOfStream([out, retval] VARIANT_BOOL* EOS); + + [id(0x00002713), propget] + HRESULT AtEndOfLine([out, retval] VARIANT_BOOL* EOL); + + [id(0x00002714)] + HRESULT Read([in] long Characters, [out, retval] BSTR* Text); + + [id(0x00002715)] + HRESULT ReadLine([out, retval] BSTR* Text); + + [id(0x00002716)] + HRESULT ReadAll([out, retval] BSTR* Text); + + [id(0x00002717)] + HRESULT Write([in] BSTR Text); + + [id(0x00002718)] + HRESULT WriteLine([in, optional, defaultvalue("")] BSTR Text); + + [id(0x00002719)] + HRESULT WriteBlankLines([in] long Lines); + + [id(0x0000271a)] + HRESULT Skip([in] long Characters); + + [id(0x0000271b)] + HRESULT SkipLine(); + + [id(0x0000271c)] + HRESULT Close(); + } + + [ + odl, + uuid(2A0B9D10-4B87-11D3-A97A-00104B365C9F), + dual, + nonextensible, + oleautomation + ] + interface IFileSystem3 : IFileSystem + { + [id(0x00004e20)] + HRESULT GetStandardStream([in] StandardStreamTypes StandardStreamType, + [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); + + [id(0x00004e2a)] + HRESULT GetFileVersion([in] BSTR FileName, [out, retval] BSTR* FileVersion); + } + + [ + odl, + uuid(AADC65F6-CFF1-11D1-B747-00C04FC2B085), + dual, + oleautomation + ] + interface IScriptEncoder : IDispatch + { + [id(00000000)] + HRESULT EncodeScriptFile([in] BSTR szExt, [in] BSTR bstrStreamIn, [in] long cFlags, + [in] BSTR bstrDefaultLang, [out, retval] BSTR* pbstrStreamOut); + } + + [ + uuid(EE09B103-97E0-11CF-978F-00A02463E06F), + version(1.0), + helpstring("Scripting.Dictionary"), + threading(apartment), + progid("Scripting.Dictionary") + ] + coclass Dictionary + { + [default] interface IDictionary; + } + + [ + uuid(0D43FE01-F093-11CF-8940-00A0C9054228), + version(1.0), + helpstring("FileSystem Object"), + threading(both), + progid("Scripting.FileSystemObject") + ] + coclass FileSystemObject + { + [default] interface IFileSystem3; + } + + [ + uuid(C7C3F5B1-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Drive + { + [default] interface IDrive; + } + + [ + uuid(C7C3F5B2-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Drives + { + [default] interface IDriveCollection; + } + + [ + uuid(C7C3F5B3-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Folder + { + [default] interface IFolder; + } + + [ + uuid(C7C3F5B4-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Folders + { + [default] interface IFolderCollection; + } + + [ + uuid(C7C3F5B5-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass File + { + [default] interface IFile; + } + + [ + uuid(C7C3F5B6-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Files + { + [default] interface IFileCollection; + } + + [ + uuid(0BB02EC0-EF49-11CF-8940-00A0C9054228), + noncreatable, + version(1.0) + ] + coclass TextStream + { + [default] interface ITextStream; + } + + [ + uuid(32DA2B15-CFED-11D1-B747-00C04FC2B085), + version(1.0), + helpstring("Script Encoder Object"), + threading(apartment), + progid("Scripting.Encoder") + ] + coclass Encoder + { + [default] interface IScriptEncoder; + } +}
Propchange: trunk/rostests/winetests/scrrun/scrrun.idl ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rostests/winetests/scrrun/testlist.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/scrrun/testlist.... ============================================================================== --- trunk/rostests/winetests/scrrun/testlist.c (added) +++ trunk/rostests/winetests/scrrun/testlist.c [iso-8859-1] Fri Sep 13 10:19:51 2013 @@ -0,0 +1,14 @@ +/* Automatically generated file; DO NOT EDIT!! */ + +#define STANDALONE +#include <wine/test.h> + +extern void func_dictionary(void); +extern void func_filesystem(void); + +const struct test winetest_testlist[] = +{ + { "dictionary", func_dictionary }, + { "filesystem", func_filesystem }, + { 0, 0 } +};
Propchange: trunk/rostests/winetests/scrrun/testlist.c ------------------------------------------------------------------------------ svn:eol-style = native