1 /*
2  * PROJECT:     ReactOS api tests
3  * LICENSE:     GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4  * PURPOSE:     Tests for StrDupA/W
5  * COPYRIGHT:   Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6  */
7 
8 #include <apitest.h>
9 #include <shlwapi.h>
10 #include <versionhelpers.h>
11 
12 static void TEST_StrDupA(void)
13 {
14     LPSTR ptrA;
15 
16     ptrA = StrDupA(NULL);
17 
18     if (IsWindowsXPOrGreater())
19         ok_ptr(ptrA, NULL);
20     else
21         ok(ptrA && !*ptrA, "ptrA: '%s'\n", wine_dbgstr_a(ptrA));
22 
23     if (ptrA)
24         LocalFree(ptrA);
25 }
26 
27 static void TEST_StrDupW(void)
28 {
29     LPWSTR ptrW;
30 
31     ptrW = StrDupW(NULL);
32 
33     if (IsWindowsXPOrGreater())
34         ok_ptr(ptrW, NULL);
35     else
36         ok(ptrW && !*ptrW, "ptrW: '%s'\n", wine_dbgstr_w(ptrW));
37 
38     if (ptrW)
39         LocalFree(ptrW);
40 }
41 
42 static void TEST_StrRet(void)
43 {
44     LPWSTR input, output;
45     if (SUCCEEDED(SHStrDupW(L"Test", &input)))
46     {
47         STRRET strret;
48         strret.uType = STRRET_WSTR;
49         U(strret).pOleStr = input;
50         output = NULL;
51         ok_int(StrRetToStrW(&strret, NULL, &output), S_OK);
52         ok_ptr(U(strret).pOleStr, NULL);
53         ok_ptr(input, output);
54         CoTaskMemFree(output);
55     }
56 }
57 
58 START_TEST(StrDup)
59 {
60     TEST_StrDupA();
61     TEST_StrDupW();
62     TEST_StrRet();
63 }
64