reactos/modules/rostests/apitests/shell32/GetDisplayNameOf.cpp
Doug Lyons 21e30f3f67
[SHELL32_APITEST] Add test for Control Panel's GetDisplayNameOf (#5495)
New regression test for shell32!GetDisplayNameOf, showing that the return
value of the function will be 'S_FALSE' when the first argument is NULL.
Also, the returned STRRET structure data is not modified by this call.

CORE-18841
2023-08-04 16:54:31 +03:00

45 lines
1.4 KiB
C++

/*
* PROJECT: ReactOS API tests
* LICENSE: LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
* PURPOSE: Test for GetDisplayNameOf
* COPYRIGHT: Copyright 2023 Mark Jansen <mark.jansen@reactos.org>
* Copyright 2023 Doug Lyons <douglyons@douglyons.com>
*/
#include "shelltest.h"
#include <stdio.h>
#include <shellutils.h>
START_TEST(GetDisplayNameOf)
{
HRESULT hr;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
CComPtr<IShellFolder> spPanel;
hr = CoCreateInstance(CLSID_ControlPanel, NULL, CLSCTX_ALL,
IID_PPV_ARG(IShellFolder, &spPanel));
ok_hr(hr, S_OK);
if (SUCCEEDED(hr))
{
STRRET ret, expected;
memset(&ret, 'a', sizeof(ret));
memset(&expected, 'a', sizeof(expected));
hr = spPanel->GetDisplayNameOf(NULL, SHGDN_NORMAL, &ret);
/* Return value is expected to be 'S_FALSE', which is out-of-spec behavior.
* The data after function call is expected to be unchanged. */
ok_hex(hr, S_FALSE);
ok(memcmp(&ret, &expected, sizeof(ret)) == 0, "Data was changed!\n");
/* Repeat the same test with SHGDN_FORPARSING */
memset(&ret, 'a', sizeof(ret));
memset(&expected, 'a', sizeof(expected));
hr = spPanel->GetDisplayNameOf(NULL, SHGDN_FORPARSING, &ret);
ok_hex(hr, S_FALSE);
ok(memcmp(&ret, &expected, sizeof(ret)) == 0, "Data was changed!\n");
}
}