scrrun: Implement GetExtensionName().

This commit is contained in:
Nikolay Sivov 2015-02-27 21:06:37 +03:00 committed by Alexandre Julliard
parent 2d15758c38
commit 3814e0229d
2 changed files with 53 additions and 4 deletions

View File

@ -3103,12 +3103,26 @@ static HRESULT WINAPI filesys_GetBaseName(IFileSystem3 *iface, BSTR Path,
return S_OK;
}
static HRESULT WINAPI filesys_GetExtensionName(IFileSystem3 *iface, BSTR Path,
BSTR *pbstrResult)
static HRESULT WINAPI filesys_GetExtensionName(IFileSystem3 *iface, BSTR path,
BSTR *ext)
{
FIXME("%p %s %p\n", iface, debugstr_w(Path), pbstrResult);
INT len;
return E_NOTIMPL;
TRACE("%p %s %p\n", iface, debugstr_w(path), ext);
*ext = NULL;
len = SysStringLen(path);
while (len) {
if (path[len-1] == '.') {
*ext = SysAllocString(&path[len]);
if (!*ext)
return E_OUTOFMEMORY;
break;
}
len--;
}
return S_OK;
}
static HRESULT WINAPI filesys_GetAbsolutePathName(IFileSystem3 *iface, BSTR Path,

View File

@ -1865,6 +1865,40 @@ static void test_SerialNumber(void)
IEnumVARIANT_Release(iter);
}
static const struct extension_test {
WCHAR path[20];
WCHAR ext[10];
} extension_tests[] = {
{ {'n','o','e','x','t',0}, {0} },
{ {'n','.','o','.','e','x','t',0}, {'e','x','t',0} },
{ {'n','.','o','.','e','X','t',0}, {'e','X','t',0} },
{ { 0 } }
};
static void test_GetExtensionName(void)
{
BSTR path, ext;
HRESULT hr;
int i;
for (i = 0; i < sizeof(extension_tests)/sizeof(extension_tests[0]); i++) {
path = SysAllocString(extension_tests[i].path);
ext = NULL;
hr = IFileSystem3_GetExtensionName(fs3, path, &ext);
ok(hr == S_OK, "got 0x%08x\n", hr);
if (*extension_tests[i].ext)
ok(!lstrcmpW(ext, extension_tests[i].ext), "%d: path %s, got %s, expected %s\n", i,
wine_dbgstr_w(path), wine_dbgstr_w(ext), wine_dbgstr_w(extension_tests[i].ext));
else
ok(ext == NULL, "%d: path %s, got %s, expected %s\n", i,
wine_dbgstr_w(path), wine_dbgstr_w(ext), wine_dbgstr_w(extension_tests[i].ext));
SysFreeString(path);
SysFreeString(ext);
}
}
START_TEST(filesystem)
{
HRESULT hr;
@ -1899,6 +1933,7 @@ START_TEST(filesystem)
test_Read();
test_GetDriveName();
test_SerialNumber();
test_GetExtensionName();
IFileSystem3_Release(fs3);