ReactOS 0.4.17-dev-357-ga8f14ff
NextPath.c File Reference
#include <apitest.h>
#include <shlwapi.h>
Include dependency graph for NextPath.c:

Go to the source code of this file.

Typedefs

typedef PSTR(WINAPIFN_NextPathA) (PCSTR, PSTR, UINT)
 
typedef PWSTR(WINAPIFN_NextPathW) (PCWSTR, PWSTR, UINT)
 

Functions

static void TEST_NextPathA (void)
 
static void TEST_NextPathW (void)
 
 START_TEST (NextPath)
 

Variables

static FN_NextPathA s_pNextPathA = NULL
 
static FN_NextPathW s_pNextPathW = NULL
 

Typedef Documentation

◆ FN_NextPathA

typedef PSTR(WINAPI * FN_NextPathA) (PCSTR, PSTR, UINT)

Definition at line 11 of file NextPath.c.

◆ FN_NextPathW

typedef PWSTR(WINAPI * FN_NextPathW) (PCWSTR, PWSTR, UINT)

Definition at line 12 of file NextPath.c.

Function Documentation

◆ START_TEST()

START_TEST ( NextPath  )

Definition at line 145 of file NextPath.c.

146{
147 HINSTANCE hSHLWAPI = GetModuleHandleA("shlwapi");
150 if (!s_pNextPathA || !s_pNextPathW)
151 {
152 skip("NextPath not found\n");
153 return;
154 }
155
158}
PWSTR(WINAPI * FN_NextPathW)(PCWSTR, PWSTR, UINT)
Definition: NextPath.c:12
static FN_NextPathW s_pNextPathW
Definition: NextPath.c:15
static void TEST_NextPathW(void)
Definition: NextPath.c:81
PSTR(WINAPI * FN_NextPathA)(PCSTR, PSTR, UINT)
Definition: NextPath.c:11
static FN_NextPathA s_pNextPathA
Definition: NextPath.c:14
static void TEST_NextPathA(void)
Definition: NextPath.c:17
#define skip(...)
Definition: atltest.h:64
#define GetProcAddress(x, y)
Definition: compat.h:753
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581

◆ TEST_NextPathA()

static void TEST_NextPathA ( void  )
static

Definition at line 17 of file NextPath.c.

18{
19 PSTR pch;
20 CHAR sz[MAX_PATH];
21
22 /* NULL pszStart returns NULL */
23 pch = s_pNextPathA(NULL, sz, _countof(sz));
24 ok(pch == NULL, "pch was %p\n", pch);
25
26 /* Basic semicolon-separated paths */
27 pch = s_pNextPathA("C:\\TEST1;C:\\TEST2;C:\\TEST3", sz, _countof(sz));
28 ok_str(sz, "C:\\TEST1");
29 pch = s_pNextPathA(pch, sz, _countof(sz));
30 ok_str(sz, "C:\\TEST2");
31 pch = s_pNextPathA(pch, sz, _countof(sz));
32 ok_str(sz, "C:\\TEST3");
33 pch = s_pNextPathA(pch, sz, _countof(sz));
34 ok(pch == NULL, "pch was %p\n", pch);
35
36 /* Whitespace-only segment */
37 pch = s_pNextPathA("C:\\TEST1; ;C:\\TEST3", sz, _countof(sz));
38 ok_str(sz, "C:\\TEST1");
39 pch = s_pNextPathA(pch, sz, _countof(sz));
40 ok(pch == NULL, "pch was %p\n", pch);
41
42 /* Empty string: no paths at all */
43 pch = s_pNextPathA("", sz, _countof(sz));
44 ok(pch == NULL, "empty string: pch was %p\n", pch);
45
46 /* Leading semicolons are skipped */
47 pch = s_pNextPathA(";;;C:\\TEST1", sz, _countof(sz));
48 ok_str(sz, "C:\\TEST1");
49 ok(pch != NULL, "leading semicolons: pch should not be NULL\n");
50
51 /* Trailing semicolon */
52 pch = s_pNextPathA("C:\\TEST1;", sz, _countof(sz));
53 ok_str(sz, "C:\\TEST1");
54 pch = s_pNextPathA(pch, sz, _countof(sz));
55 ok(pch == NULL, "trailing semicolon: pch was %p\n", pch);
56
57 /* Only semicolons */
58 pch = s_pNextPathA(";;;", sz, _countof(sz));
59 ok(pch == NULL, "only semicolons: pch was %p\n", pch);
60
61 /* Path with surrounding spaces */
62 pch = s_pNextPathA(" C:\\TEST1 ;C:\\TEST2", sz, _countof(sz));
63 ok_str(sz, "C:\\TEST1");
64 pch = s_pNextPathA(pch, sz, _countof(sz));
65 ok_str(sz, "C:\\TEST2");
66
67 /* Single path, no semicolon */
68 pch = s_pNextPathA("C:\\SINGLE", sz, _countof(sz));
69 ok_str(sz, "C:\\SINGLE");
70 pch = s_pNextPathA(pch, sz, _countof(sz));
71 ok(pch == NULL, "single path: pch was %p\n", pch);
72
73 /* cchDest = 0 */
74 sz[0] = '*';
75 sz[1] = ANSI_NULL;
76 pch = s_pNextPathA("C:\\TEST1;C:\\TEST2;C:\\TEST3", sz, 0);
77 ok_str(pch, "C:\\TEST2;C:\\TEST3");
78 ok_str(sz, "*");
79}
#define ok_str(x, y)
Definition: atltest.h:127
#define ok(value,...)
Definition: atltest.h:57
#define NULL
Definition: types.h:112
#define MAX_PATH
Definition: compat.h:34
#define pch(ap)
Definition: match.c:418
#define ANSI_NULL
char CHAR
Definition: pedump.c:57
#define _countof(array)
Definition: sndvol32.h:70
char * PSTR
Definition: typedefs.h:51

Referenced by START_TEST().

◆ TEST_NextPathW()

static void TEST_NextPathW ( void  )
static

Definition at line 81 of file NextPath.c.

82{
83 PWSTR pch;
84 WCHAR sz[MAX_PATH];
85
86 /* NULL pszStart returns NULL */
87 pch = s_pNextPathW(NULL, sz, _countof(sz));
88 ok(pch == NULL, "pch was %p\n", pch);
89
90 /* Basic semicolon-separated paths */
91 pch = s_pNextPathW(L"C:\\TEST1;C:\\TEST2;C:\\TEST3", sz, _countof(sz));
92 ok_wstr(sz, L"C:\\TEST1");
93 pch = s_pNextPathW(pch, sz, _countof(sz));
94 ok_wstr(sz, L"C:\\TEST2");
95 pch = s_pNextPathW(pch, sz, _countof(sz));
96 ok_wstr(sz, L"C:\\TEST3");
97 pch = s_pNextPathW(pch, sz, _countof(sz));
98 ok(pch == NULL, "pch was %p\n", pch);
99
100 /* Whitespace-only segment */
101 pch = s_pNextPathW(L"C:\\TEST1; ;C:\\TEST3", sz, _countof(sz));
102 ok_wstr(sz, L"C:\\TEST1");
103 pch = s_pNextPathW(pch, sz, _countof(sz));
104 ok(pch == NULL, "pch was %p\n", pch);
105
106 /* Empty string */
107 pch = s_pNextPathW(L"", sz, _countof(sz));
108 ok(pch == NULL, "empty string: pch was %p\n", pch);
109
110 /* Leading semicolons are skipped */
111 pch = s_pNextPathW(L";;;C:\\TEST1", sz, _countof(sz));
112 ok_wstr(sz, L"C:\\TEST1");
113 ok(pch != NULL, "leading semicolons: pch should not be NULL\n");
114
115 /* Trailing semicolon */
116 pch = s_pNextPathW(L"C:\\TEST1;", sz, _countof(sz));
117 ok_wstr(sz, L"C:\\TEST1");
118 pch = s_pNextPathW(pch, sz, _countof(sz));
119 ok(pch == NULL, "trailing semicolon: pch was %p\n", pch);
120
121 /* Only semicolons */
122 pch = s_pNextPathW(L";;;", sz, _countof(sz));
123 ok(pch == NULL, "only semicolons: pch was %p\n", pch);
124
125 /* Path with surrounding spaces */
126 pch = s_pNextPathW(L" C:\\TEST1 ;C:\\TEST2", sz, _countof(sz));
127 ok_wstr(sz, L"C:\\TEST1");
128 pch = s_pNextPathW(pch, sz, _countof(sz));
129 ok_wstr(sz, L"C:\\TEST2");
130
131 /* Single path, no semicolon */
132 pch = s_pNextPathW(L"C:\\SINGLE", sz, _countof(sz));
133 ok_wstr(sz, L"C:\\SINGLE");
134 pch = s_pNextPathW(pch, sz, _countof(sz));
135 ok(pch == NULL, "single path: pch was %p\n", pch);
136
137 /* cchDest = 0 */
138 sz[0] = L'*';
139 sz[1] = UNICODE_NULL;
140 pch = s_pNextPathW(L"C:\\TEST1;C:\\TEST2;C:\\TEST3", sz, 0);
141 ok_wstr(pch, L"C:\\TEST2;C:\\TEST3");
142 ok_wstr(sz, L"*");
143}
#define ok_wstr(x, y)
Definition: atltest.h:130
#define L(x)
Definition: resources.c:13
#define UNICODE_NULL
short WCHAR
Definition: pedump.c:58
uint16_t * PWSTR
Definition: typedefs.h:56

Referenced by START_TEST().

Variable Documentation

◆ s_pNextPathA

FN_NextPathA s_pNextPathA = NULL
static

Definition at line 14 of file NextPath.c.

Referenced by START_TEST(), and TEST_NextPathA().

◆ s_pNextPathW

FN_NextPathW s_pNextPathW = NULL
static

Definition at line 15 of file NextPath.c.

Referenced by START_TEST(), and TEST_NextPathW().