ReactOS 0.4.16-dev-1946-g52006dd
GUIDFromString.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: Tests for GUIDFromStringA/W
5 * COPYRIGHT: Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6 */
7
8#include <shelltest.h>
9#include <initguid.h>
10#include <undocshell.h>
11#include <versionhelpers.h>
12
13DEFINE_GUID(invalid_guid, 0xDEADDEAD, 0xDEAD, 0xDEAD, 0xED, 0xED, 0xED, 0xED,
14 0xED, 0xED, 0xED, 0xED);
15
16//DEFINE_GUID(IID_IShellLinkW, 0x000214F9, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00,
17// 0x00, 0x00, 0x00, 0x46);
18//DEFINE_GUID(IID_IShellLinkW_Invalid, 0x000214F9, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00,
19// 0x00, 0x00, 0x00, 0xED);
20
21static void TEST_GUIDFromStringA(void)
22{
23 GUID guid;
24 BOOL ret;
25
26 guid = invalid_guid;
28 {
30 }
32 {
33 ret = 0xDEADBEEF;
34 }
36
37 ok(ret == FALSE || // Win8+
38 ret == (int)(0xDEADBEEF), // Win2k3-Win7
39 "Wrong value for ret (0x%X)\n", ret);
40 ok_int(memcmp(&guid, &invalid_guid, sizeof(guid)) == 0, TRUE);
41
42 guid = invalid_guid;
44 ok_int(memcmp(&guid, &invalid_guid, sizeof(guid)) == 0, TRUE);
45
46 guid = invalid_guid;
48 ok_int(memcmp(&guid, &invalid_guid, sizeof(guid)) == 0, TRUE);
49
50 guid = invalid_guid;
51 ok_int(GUIDFromStringA("{000214F9-0000-0000-C000-000000000046", &guid), FALSE);
52 //ok_int(memcmp(&guid, &IID_IShellLinkW_Invalid, sizeof(guid)) == 0, TRUE); // Ignorable corner case
53
54 guid = invalid_guid;
55 ok_int(GUIDFromStringA("{000214F9-0000-0000-C000-000000000046}", &guid), TRUE);
56 ok_int(memcmp(&guid, &IID_IShellLinkW, sizeof(guid)) == 0, TRUE);
57
58 guid = invalid_guid;
59 ok_int(GUIDFromStringA("{000214F9-0000-0000-C000-000000000046}g", &guid), TRUE);
60 ok_int(memcmp(&guid, &IID_IShellLinkW, sizeof(guid)) == 0, TRUE);
61
62 guid = invalid_guid;
63 ok_int(GUIDFromStringA(" {000214F9-0000-0000-C000-000000000046}", &guid), FALSE);
64 ok_int(memcmp(&guid, &invalid_guid, sizeof(guid)) == 0, TRUE);
65}
66
67static void TEST_GUIDFromStringW(void)
68{
69 GUID guid;
70 BOOL ret;
71
72 guid = invalid_guid;
74 {
76 }
78 {
79 ret = 0xDEADBEEF;
80 }
82
83 ok(ret == (int)(0xDEADBEEF) || // Win8+
84 ret == FALSE, // Win2k3-Win7
85 "Wrong value for ret (0x%X)\n", ret);
86 ok_int(memcmp(&guid, &invalid_guid, sizeof(guid)) == 0, TRUE);
87
88 guid = invalid_guid;
90 ok_int(memcmp(&guid, &invalid_guid, sizeof(guid)) == 0, TRUE);
91
92 guid = invalid_guid;
94 ok_int(memcmp(&guid, &invalid_guid, sizeof(guid)) == 0, TRUE);
95
96 guid = invalid_guid;
97 ok_int(GUIDFromStringW(L"{000214F9-0000-0000-C000-000000000046", &guid), FALSE);
98 //ok_int(memcmp(&guid, &IID_IShellLinkW_Invalid, sizeof(guid)) == 0, TRUE); // Ignorable corner case
99
100 guid = invalid_guid;
101 ok_int(GUIDFromStringW(L"{000214F9-0000-0000-C000-000000000046}", &guid), TRUE);
102 ok_int(memcmp(&guid, &IID_IShellLinkW, sizeof(guid)) == 0, TRUE);
103
104 guid = invalid_guid;
105 ok_int(GUIDFromStringW(L"{000214F9-0000-0000-C000-000000000046}g", &guid), TRUE);
106 ok_int(memcmp(&guid, &IID_IShellLinkW, sizeof(guid)) == 0, TRUE);
107
108 guid = invalid_guid;
109 ok_int(GUIDFromStringW(L" {000214F9-0000-0000-C000-000000000046}", &guid), FALSE);
110 ok_int(memcmp(&guid, &invalid_guid, sizeof(guid)) == 0, TRUE);
111}
112
113START_TEST(GUIDFromString)
114{
117}
static void TEST_GUIDFromStringW(void)
static void TEST_GUIDFromStringA(void)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
#define ok(value,...)
Definition: atltest.h:57
#define START_TEST(x)
Definition: atltest.h:75
#define ok_int(expression, result)
Definition: atltest.h:134
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
GUID guid
Definition: version.c:147
return ret
Definition: mutex.c:146
#define L(x)
Definition: resources.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:90
BOOL WINAPI GUIDFromStringW(_In_ PCWSTR psz, _Out_ LPGUID pguid)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
Definition: guiddef.h:68
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:82
#define _SEH2_END
Definition: pseh2_64.h:171
#define _SEH2_TRY
Definition: pseh2_64.h:71
BOOL WINAPI GUIDFromStringA(LPCSTR str, LPGUID guid)
Definition: shellord.c:2096