1 /*
2  * PROJECT:     ReactOS API tests
3  * LICENSE:     LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
4  * PURPOSE:     Test for GetDisplayNameOf
5  * COPYRIGHT:   Copyright 2023 Mark Jansen <mark.jansen@reactos.org>
6  *              Copyright 2023 Doug Lyons <douglyons@douglyons.com>
7  */
8 
9 #include "shelltest.h"
10 #include <stdio.h>
11 #include <shellutils.h>
12 
13 START_TEST(GetDisplayNameOf)
14 {
15     HRESULT hr;
16     CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
17 
18     CComPtr<IShellFolder> spPanel;
19 
20     hr = CoCreateInstance(CLSID_ControlPanel, NULL, CLSCTX_ALL,
21                           IID_PPV_ARG(IShellFolder, &spPanel));
22     ok_hr(hr, S_OK);
23     if (SUCCEEDED(hr))
24     {
25         STRRET ret, expected;
26 
27         memset(&ret, 'a', sizeof(ret));
28         memset(&expected, 'a', sizeof(expected));
29         hr = spPanel->GetDisplayNameOf(NULL, SHGDN_NORMAL, &ret);
30 
31         /* Return value is expected to be 'S_FALSE', which is out-of-spec behavior.
32          * The data after function call is expected to be unchanged. */
33         ok_hex(hr, S_FALSE);
34         ok(memcmp(&ret, &expected, sizeof(ret)) == 0, "Data was changed!\n");
35 
36         /* Repeat the same test with SHGDN_FORPARSING */
37         memset(&ret, 'a', sizeof(ret));
38         memset(&expected, 'a', sizeof(expected));
39         hr = spPanel->GetDisplayNameOf(NULL, SHGDN_FORPARSING, &ret);
40 
41         ok_hex(hr, S_FALSE);
42         ok(memcmp(&ret, &expected, sizeof(ret)) == 0, "Data was changed!\n");
43     }
44 }
45