2 * Copyright 2012 Hans Leidekker for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26 #include "wine/test.h"
28 static const WCHAR path1
[] = {0};
29 static const WCHAR path2
[] = {'\\',0};
30 static const WCHAR path3
[] = {'\\','\\','s','e','r','v','e','r',0};
31 static const WCHAR path4
[] = {'\\','\\','s','e','r','v','e','r','\\',0};
32 static const WCHAR path5
[] = {'\\','\\','.','\\',0};
33 static const WCHAR path6
[] = {'/','/','.','/','r','o','o','t','/','c','i','m','v','2',0};
34 static const WCHAR path7
[] =
35 {'/','/','.','/','r','o','o','t','/','c','i','m','v','2',':','W','i','n','3','2','_',
36 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};
37 static const WCHAR path8
[] =
38 {'/','r','o','o','t','/','c','i','m','v','2',':','W','i','n','3','2','_',
39 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};
40 static const WCHAR path9
[] =
41 {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
42 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};
43 static const WCHAR path10
[] =
44 {'/','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
45 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};
46 static const WCHAR path11
[] =
47 {'/','/','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
48 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};
49 static const WCHAR path12
[] =
50 {'r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
51 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};
52 static const WCHAR path13
[] =
53 {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',0};
54 static const WCHAR path14
[] =
55 {'W','i','n','3','2','_','O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};
56 static const WCHAR path15
[] =
57 {'r','o','o','t','\\','c','i','m','v','2',0};
58 static const WCHAR path16
[] =
59 {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',0};
60 static const WCHAR path17
[] =
61 {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
62 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d','=',
64 static const WCHAR path18
[] =
65 {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
66 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d','=',
67 '"','C',':','"',',','D','r','i','v','e','T','y','p','e','=','3',0};
68 static const WCHAR path19
[] =
69 {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
70 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d','=',0};
71 static const WCHAR path20
[] =
72 {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
73 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d',' ','=',' ',
76 static IWbemPath
*create_path(void)
81 hr
= CoCreateInstance( &CLSID_WbemDefPath
, NULL
, CLSCTX_INPROC_SERVER
, &IID_IWbemPath
, (void **)&path
);
84 win_skip( "can't create WbemDefPath instance, skipping tests\n" );
90 static void test_IWbemPath_SetText(void)
100 { path1
, 0, WBEM_E_INVALID_PARAMETER
},
101 { path1
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
},
102 { path2
, 0, WBEM_E_INVALID_PARAMETER
},
103 { path2
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
},
104 { path3
, 0, WBEM_E_INVALID_PARAMETER
},
105 { path3
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
},
106 { path4
, 0, WBEM_E_INVALID_PARAMETER
},
107 { path4
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
},
108 { path5
, 0, WBEM_E_INVALID_PARAMETER
},
109 { path5
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
},
110 { path6
, 0, WBEM_E_INVALID_PARAMETER
},
111 { path6
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
},
112 { path7
, 0, WBEM_E_INVALID_PARAMETER
},
113 { path7
, WBEMPATH_CREATE_ACCEPT_RELATIVE
, S_OK
},
114 { path7
, WBEMPATH_CREATE_ACCEPT_ABSOLUTE
, S_OK
},
115 { path7
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
},
116 { path7
, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS
, WBEM_E_INVALID_PARAMETER
, TRUE
},
117 { path7
, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS
+ 1, S_OK
},
118 { path8
, WBEMPATH_CREATE_ACCEPT_RELATIVE
, S_OK
},
119 { path8
, WBEMPATH_CREATE_ACCEPT_ABSOLUTE
, WBEM_E_INVALID_PARAMETER
, TRUE
},
120 { path8
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
},
121 { path8
, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS
, WBEM_E_INVALID_PARAMETER
, TRUE
},
122 { path8
, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS
+ 1, S_OK
},
123 { path9
, WBEMPATH_CREATE_ACCEPT_ABSOLUTE
, S_OK
},
124 { path10
, WBEMPATH_CREATE_ACCEPT_ABSOLUTE
, WBEM_E_INVALID_PARAMETER
, TRUE
},
125 { path11
, WBEMPATH_CREATE_ACCEPT_ABSOLUTE
, S_OK
},
126 { path15
, WBEMPATH_CREATE_ACCEPT_ALL
, S_OK
}
132 if (!(path
= create_path())) return;
134 hr
= IWbemPath_SetText( path
, 0, NULL
);
135 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
137 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, NULL
);
138 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
140 for (i
= 0; i
< ARRAY_SIZE(test
); i
++)
142 hr
= IWbemPath_SetText( path
, test
[i
].mode
, test
[i
].path
);
143 todo_wine_if (test
[i
].todo
)
144 ok( hr
== test
[i
].ret
, "%u got %08x\n", i
, hr
);
146 if (test
[i
].ret
== S_OK
)
151 memset( buf
, 0x55, sizeof(buf
) );
152 len
= ARRAY_SIZE(buf
);
153 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_ORIGINAL
, &len
, buf
);
154 ok( hr
== S_OK
, "%u got %08x\n", i
, hr
);
155 ok( !lstrcmpW( buf
, test
[i
].path
), "%u unexpected path %s\n", i
, wine_dbgstr_w(buf
) );
156 ok( len
== lstrlenW( test
[i
].path
) + 1, "%u unexpected length %u\n", i
, len
);
159 IWbemPath_Release( path
);
162 static void test_IWbemPath_GetText(void)
164 static const WCHAR serviceW
[] =
165 {'W','i','n','3','2','_','S','e','r','v','i','c','e','.','N','a','m','e','=',
166 '\"','S','e','r','v','i','c','e','\"',0};
167 static const WCHAR classW
[] =
168 {'W','i','n','3','2','_','C','l','a','s','s',0};
169 static const WCHAR expected1W
[] =
170 {'r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_',
171 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d','=',
173 static const WCHAR expected2W
[] =
174 {'W','i','n','3','2','_','L','o','g','i','c','a','l','D','i','s','k','.',
175 'D','e','v','i','c','e','I','d','=','"','C',':','"',0};
176 static const WCHAR expected3W
[] =
177 {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',0};
183 if (!(path
= create_path())) return;
185 hr
= IWbemPath_GetText( path
, 0, NULL
, NULL
);
186 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
188 len
= ARRAY_SIZE(buf
);
189 hr
= IWbemPath_GetText( path
, 0, &len
, NULL
);
190 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
191 ok( len
== ARRAY_SIZE(buf
), "unexpected length %u\n", len
);
193 len
= ARRAY_SIZE(buf
);
194 memset( buf
, 0x55, sizeof(buf
) );
195 hr
= IWbemPath_GetText( path
, 0, &len
, buf
);
196 ok( hr
== S_OK
, "got %08x\n", hr
);
197 ok( !buf
[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
198 ok( len
== 1, "unexpected length %u\n", len
);
200 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_ORIGINAL
, NULL
, NULL
);
201 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
203 len
= ARRAY_SIZE(buf
);
204 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_ORIGINAL
, &len
, NULL
);
205 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
206 ok( len
== ARRAY_SIZE(buf
), "unexpected length %u\n", len
);
208 len
= ARRAY_SIZE(buf
);
209 memset( buf
, 0x55, sizeof(buf
) );
210 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_ORIGINAL
, &len
, buf
);
211 ok( hr
== S_OK
, "got %08x\n", hr
);
212 ok( !buf
[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
213 ok( len
== 1, "unexpected length %u\n", len
);
215 len
= ARRAY_SIZE(buf
);
216 memset( buf
, 0x55, sizeof(buf
) );
217 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_SERVER_TOO
, &len
, buf
);
218 ok( hr
== S_OK
, "got %08x\n", hr
);
219 todo_wine
ok( !buf
[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
220 todo_wine
ok( len
== 1, "unexpected length %u\n", len
);
222 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path8
);
223 ok( hr
== S_OK
, "got %08x\n", hr
);
226 hr
= IWbemPath_GetNamespaceCount( path
, &count
);
227 ok( hr
== S_OK
, "got %08x\n", hr
);
228 ok( count
== 2, "got %u\n", count
);
230 len
= ARRAY_SIZE(buf
);
231 memset( buf
, 0x55, sizeof(buf
) );
232 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_SERVER_TOO
, &len
, buf
);
233 ok( hr
== S_OK
, "got %08x\n", hr
);
234 ok( !lstrcmpW( buf
, path9
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
235 ok( len
== lstrlenW( path9
) + 1, "unexpected length %u\n", len
);
237 len
= ARRAY_SIZE(buf
);
238 memset( buf
, 0x55, sizeof(buf
) );
239 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLY
, &len
, buf
);
240 ok( hr
== S_OK
, "got %08x\n", hr
);
241 ok( !lstrcmpW( buf
, path13
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
242 ok( len
== lstrlenW( path13
) + 1, "unexpected length %u\n", len
);
244 len
= ARRAY_SIZE(buf
);
245 memset( buf
, 0x55, sizeof(buf
) );
246 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_RELATIVE_ONLY
, &len
, buf
);
247 ok( hr
== S_OK
, "got %08x\n", hr
);
248 ok( !lstrcmpW( buf
, path14
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
249 ok( len
== lstrlenW( path14
) + 1, "unexpected length %u\n", len
);
251 len
= ARRAY_SIZE(buf
);
252 memset( buf
, 0x55, sizeof(buf
) );
253 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_NAMESPACE_ONLY
, &len
, buf
);
254 ok( hr
== S_OK
, "got %08x\n", hr
);
255 ok( !lstrcmpW( buf
, path15
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
256 ok( len
== lstrlenW( path15
) + 1, "unexpected length %u\n", len
);
258 len
= ARRAY_SIZE(buf
);
259 memset( buf
, 0x55, sizeof(buf
) );
260 hr
= IWbemPath_GetText( path
, 0, &len
, buf
);
261 ok( hr
== S_OK
, "got %08x\n", hr
);
262 ok( !lstrcmpW( buf
, path12
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
263 ok( len
== lstrlenW( path12
) + 1, "unexpected length %u\n", len
);
265 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path1
);
266 ok( hr
== S_OK
, "got %08x\n", hr
);
269 hr
= IWbemPath_GetNamespaceCount( path
, &count
);
270 ok( hr
== S_OK
, "got %08x\n", hr
);
271 ok( !count
, "got %u\n", count
);
273 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path6
);
274 ok( hr
== S_OK
, "got %08x\n", hr
);
277 hr
= IWbemPath_GetNamespaceCount( path
, &count
);
278 ok( hr
== S_OK
, "got %08x\n", hr
);
279 ok( count
== 2, "got %u\n", count
);
282 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_SERVER_TOO
, &len
, NULL
);
283 ok( hr
== S_OK
, "got %08x\n", hr
);
284 ok( len
== lstrlenW( path16
) + 1, "unexpected length %u\n", len
);
286 len
= ARRAY_SIZE(buf
);
287 memset( buf
, 0x55, sizeof(buf
) );
288 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_SERVER_TOO
, &len
, buf
);
289 ok( hr
== S_OK
, "got %08x\n", hr
);
290 ok( !lstrcmpW( buf
, path16
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
291 ok( len
== lstrlenW( path16
) + 1, "unexpected length %u\n", len
);
293 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path17
);
294 ok( hr
== S_OK
, "got %08x\n", hr
);
296 len
= ARRAY_SIZE(buf
);
297 memset( buf
, 0x55, sizeof(buf
) );
298 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_SERVER_TOO
, &len
, buf
);
299 ok( hr
== S_OK
, "got %08x\n", hr
);
300 ok( !lstrcmpW( buf
, path17
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
301 ok( len
== lstrlenW( path17
) + 1, "unexpected length %u\n", len
);
303 len
= ARRAY_SIZE(buf
);
304 memset( buf
, 0x55, sizeof(buf
) );
305 hr
= IWbemPath_GetText( path
, 0, &len
, buf
);
306 ok( hr
== S_OK
, "got %08x\n", hr
);
307 ok( !lstrcmpW( buf
, expected1W
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
308 ok( len
== lstrlenW( expected1W
) + 1, "unexpected length %u\n", len
);
310 len
= ARRAY_SIZE(buf
);
311 memset( buf
, 0x55, sizeof(buf
) );
312 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_RELATIVE_ONLY
, &len
, buf
);
313 ok( hr
== S_OK
, "got %08x\n", hr
);
314 ok( !lstrcmpW( buf
, expected2W
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
315 ok( len
== lstrlenW( expected2W
) + 1, "unexpected length %u\n", len
);
317 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path15
);
318 ok( hr
== S_OK
, "got %08x\n", hr
);
320 len
= ARRAY_SIZE(buf
);
321 memset( buf
, 0x55, sizeof(buf
) );
322 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_SERVER_TOO
, &len
, buf
);
323 ok( hr
== S_OK
, "got %08x\n", hr
);
324 ok( !lstrcmpW( buf
, expected3W
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
325 ok( len
== lstrlenW( expected3W
) + 1, "unexpected length %u\n", len
);
327 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path18
);
328 ok( hr
== S_OK
, "got %08x\n", hr
);
330 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path19
);
331 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
333 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path20
);
334 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
336 IWbemPath_Release( path
);
337 if (!(path
= create_path())) return;
339 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, serviceW
);
340 ok( hr
== S_OK
, "got %08x\n", hr
);
342 len
= ARRAY_SIZE(buf
);
343 memset( buf
, 0x55, sizeof(buf
) );
344 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_RELATIVE_ONLY
, &len
, buf
);
345 ok( hr
== S_OK
, "got %08x\n", hr
);
346 ok( !lstrcmpW( buf
, serviceW
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
347 ok( len
== lstrlenW( serviceW
) + 1, "unexpected length %u\n", len
);
349 IWbemPath_Release( path
);
350 if (!(path
= create_path())) return;
352 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, classW
);
353 ok( hr
== S_OK
, "got %08x\n", hr
);
355 len
= ARRAY_SIZE(buf
);
356 memset( buf
, 0x55, sizeof(buf
) );
357 hr
= IWbemPath_GetText( path
, WBEMPATH_GET_RELATIVE_ONLY
, &len
, buf
);
358 ok( hr
== S_OK
, "got %08x\n", hr
);
359 ok( !lstrcmpW( buf
, classW
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
360 ok( len
== lstrlenW( classW
) + 1, "unexpected length %u\n", len
);
362 IWbemPath_Release( path
);
365 static void test_IWbemPath_GetClassName(void)
367 static const WCHAR classW
[] = {'W','i','n','3','2','_','L','o','g','i','c','a','l','D','i','s','k',0};
373 if (!(path
= create_path())) return;
375 hr
= IWbemPath_GetClassName( path
, NULL
, NULL
);
376 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
379 hr
= IWbemPath_GetClassName( path
, &len
, NULL
);
380 ok( hr
== WBEM_E_INVALID_OBJECT_PATH
, "got %08x\n", hr
);
382 len
= ARRAY_SIZE(buf
);
383 hr
= IWbemPath_GetClassName( path
, &len
, buf
);
384 ok( hr
== WBEM_E_INVALID_OBJECT_PATH
, "got %08x\n", hr
);
386 len
= ARRAY_SIZE(buf
);
387 hr
= IWbemPath_GetClassName( path
, &len
, NULL
);
388 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
389 ok( len
== ARRAY_SIZE(buf
), "unexpected length %u\n", len
);
391 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path17
);
392 ok( hr
== S_OK
, "got %08x\n", hr
);
395 hr
= IWbemPath_GetClassName( path
, &len
, NULL
);
396 ok( hr
== S_OK
, "got %08x\n", hr
);
398 len
= ARRAY_SIZE(buf
);
399 hr
= IWbemPath_GetClassName( path
, &len
, NULL
);
400 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
401 ok( len
== ARRAY_SIZE(buf
), "unexpected length %u\n", len
);
404 len
= ARRAY_SIZE(buf
);
405 hr
= IWbemPath_GetClassName( path
, &len
, buf
);
406 ok( hr
== S_OK
, "got %08x\n", hr
);
407 ok( !lstrcmpW( buf
, classW
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
408 ok( len
== lstrlenW( classW
) + 1, "unexpected length %u\n", len
);
410 IWbemPath_Release( path
);
413 static void test_IWbemPath_SetClassName(void)
415 static const WCHAR classW
[] = {'c','l','a','s','s',0};
416 static const WCHAR emptyW
[] = {0};
423 if (!(path
= create_path())) return;
425 hr
= IWbemPath_SetClassName( path
, NULL
);
426 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
428 hr
= IWbemPath_SetClassName( path
, emptyW
);
429 ok( hr
== S_OK
, "got %08x\n", hr
);
431 hr
= IWbemPath_SetClassName( path
, classW
);
432 ok( hr
== S_OK
, "got %08x\n", hr
);
435 len
= ARRAY_SIZE(buf
);
436 hr
= IWbemPath_GetClassName( path
, &len
, buf
);
437 ok( hr
== S_OK
, "got %08x\n", hr
);
438 ok( !lstrcmpW( buf
, classW
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
441 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
442 ok( hr
== S_OK
, "got %08x\n", hr
);
443 ok( flags
== (WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_IS_CLASS_REF
|
444 WBEMPATH_INFO_HAS_SUBSCOPES
| WBEMPATH_INFO_V2_COMPLIANT
|
445 WBEMPATH_INFO_CIM_COMPLIANT
),
446 "got %s\n", wine_dbgstr_longlong(flags
) );
448 IWbemPath_Release( path
);
451 static void test_IWbemPath_GetServer(void)
453 static const WCHAR dotW
[] = {'.',0};
459 if (!(path
= create_path())) return;
461 hr
= IWbemPath_GetServer( path
, NULL
, NULL
);
462 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
465 hr
= IWbemPath_GetServer( path
, &len
, NULL
);
466 ok( hr
== WBEM_E_NOT_AVAILABLE
, "got %08x\n", hr
);
468 len
= ARRAY_SIZE(buf
);
469 hr
= IWbemPath_GetServer( path
, &len
, buf
);
470 ok( hr
== WBEM_E_NOT_AVAILABLE
, "got %08x\n", hr
);
472 len
= ARRAY_SIZE(buf
);
473 hr
= IWbemPath_GetServer( path
, &len
, NULL
);
474 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
475 ok( len
== ARRAY_SIZE(buf
), "unexpected length %u\n", len
);
477 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path17
);
478 ok( hr
== S_OK
, "got %08x\n", hr
);
481 hr
= IWbemPath_GetServer( path
, &len
, NULL
);
482 ok( hr
== S_OK
, "got %08x\n", hr
);
484 len
= ARRAY_SIZE(buf
);
485 hr
= IWbemPath_GetServer( path
, &len
, NULL
);
486 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
487 ok( len
== ARRAY_SIZE(buf
), "unexpected length %u\n", len
);
490 len
= ARRAY_SIZE(buf
);
491 hr
= IWbemPath_GetServer( path
, &len
, buf
);
492 ok( hr
== S_OK
, "got %08x\n", hr
);
493 ok( !lstrcmpW( buf
, dotW
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
494 ok( len
== lstrlenW( dotW
) + 1, "unexpected length %u\n", len
);
496 IWbemPath_Release( path
);
499 static void test_IWbemPath_GetInfo(void)
505 if (!(path
= create_path())) return;
507 hr
= IWbemPath_GetInfo( path
, 0, NULL
);
508 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
510 hr
= IWbemPath_GetInfo( path
, 1, NULL
);
511 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
514 hr
= IWbemPath_GetInfo( path
, 0, &resp
);
515 ok( hr
== S_OK
, "got %08x\n", hr
);
516 ok( resp
== (WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_SERVER_NAMESPACE_ONLY
),
517 "got %s\n", wine_dbgstr_longlong(resp
) );
519 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path17
);
520 ok( hr
== S_OK
, "got %08x\n", hr
);
522 hr
= IWbemPath_GetInfo( path
, 0, NULL
);
523 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
525 hr
= IWbemPath_GetInfo( path
, 1, NULL
);
526 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
529 hr
= IWbemPath_GetInfo( path
, 0, &resp
);
530 ok( hr
== S_OK
, "got %08x\n", hr
);
531 ok( resp
== (WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_IS_INST_REF
|
532 WBEMPATH_INFO_HAS_SUBSCOPES
| WBEMPATH_INFO_V2_COMPLIANT
|
533 WBEMPATH_INFO_CIM_COMPLIANT
| WBEMPATH_INFO_PATH_HAD_SERVER
),
534 "got %s\n", wine_dbgstr_longlong(resp
) );
536 IWbemPath_Release( path
);
537 if (!(path
= create_path())) return;
539 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path12
);
540 ok( hr
== S_OK
, "got %08x\n", hr
);
543 hr
= IWbemPath_GetInfo( path
, 0, &resp
);
544 ok( hr
== S_OK
, "got %08x\n", hr
);
545 ok( resp
== (WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_IS_CLASS_REF
|
546 WBEMPATH_INFO_HAS_SUBSCOPES
| WBEMPATH_INFO_V2_COMPLIANT
|
547 WBEMPATH_INFO_CIM_COMPLIANT
),
548 "got %s\n", wine_dbgstr_longlong(resp
) );
550 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path1
);
551 ok( hr
== S_OK
, "got %08x\n", hr
);
554 hr
= IWbemPath_GetInfo( path
, 0, &resp
);
555 ok( hr
== S_OK
, "got %08x\n", hr
);
556 ok( resp
== (WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_SERVER_NAMESPACE_ONLY
),
557 "got %s\n", wine_dbgstr_longlong(resp
) );
559 IWbemPath_Release( path
);
562 static void test_IWbemPath_SetServer(void)
564 static const WCHAR serverW
[] = {'s','e','r','v','e','r',0};
565 static const WCHAR emptyW
[] = {0};
572 if (!(path
= create_path())) return;
574 hr
= IWbemPath_SetServer( path
, NULL
);
575 ok( hr
== S_OK
, "got %08x\n", hr
);
577 len
= ARRAY_SIZE(buf
);
578 hr
= IWbemPath_GetServer( path
, &len
, buf
);
579 ok( hr
== WBEM_E_NOT_AVAILABLE
, "got %08x\n", hr
);
581 hr
= IWbemPath_SetServer( path
, emptyW
);
582 ok( hr
== S_OK
, "got %08x\n", hr
);
584 hr
= IWbemPath_SetServer( path
, serverW
);
585 ok( hr
== S_OK
, "got %08x\n", hr
);
588 len
= ARRAY_SIZE(buf
);
589 hr
= IWbemPath_GetServer( path
, &len
, buf
);
590 ok( hr
== S_OK
, "got %08x\n", hr
);
591 ok( !lstrcmpW( buf
, serverW
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
594 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
595 ok( hr
== S_OK
, "got %08x\n", hr
);
596 ok( flags
== (WBEMPATH_INFO_HAS_MACHINE_NAME
| WBEMPATH_INFO_V1_COMPLIANT
|
597 WBEMPATH_INFO_V2_COMPLIANT
| WBEMPATH_INFO_CIM_COMPLIANT
|
598 WBEMPATH_INFO_SERVER_NAMESPACE_ONLY
| WBEMPATH_INFO_PATH_HAD_SERVER
),
599 "got %s\n", wine_dbgstr_longlong(flags
) );
601 hr
= IWbemPath_SetServer( path
, NULL
);
602 ok( hr
== S_OK
, "got %08x\n", hr
);
604 len
= ARRAY_SIZE(buf
);
605 hr
= IWbemPath_GetServer( path
, &len
, buf
);
606 ok( hr
== WBEM_E_NOT_AVAILABLE
, "got %08x\n", hr
);
609 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
610 ok( hr
== S_OK
, "got %08x\n", hr
);
611 ok( flags
== (WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_SERVER_NAMESPACE_ONLY
),
612 "got %s\n", wine_dbgstr_longlong(flags
) );
614 IWbemPath_Release( path
);
617 static void test_IWbemPath_GetNamespaceAt(void)
619 static const WCHAR rootW
[] = {'r','o','o','t',0};
620 static const WCHAR cimv2W
[] = {'c','i','m','v','2',0};
626 if (!(path
= create_path())) return;
628 hr
= IWbemPath_GetNamespaceAt( path
, 0, NULL
, NULL
);
629 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
632 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, NULL
);
633 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
635 len
= ARRAY_SIZE(buf
);
636 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, buf
);
637 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
639 len
= ARRAY_SIZE(buf
);
640 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, NULL
);
641 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
642 ok( len
== ARRAY_SIZE(buf
), "unexpected length %u\n", len
);
644 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path17
);
645 ok( hr
== S_OK
, "got %08x\n", hr
);
648 hr
= IWbemPath_GetNamespaceAt( path
, 2, &len
, NULL
);
649 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
651 len
= ARRAY_SIZE(buf
);
652 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, NULL
);
653 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
654 ok( len
== ARRAY_SIZE(buf
), "unexpected length %u\n", len
);
657 len
= ARRAY_SIZE(buf
);
658 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, buf
);
659 ok( hr
== S_OK
, "got %08x\n", hr
);
660 ok( !lstrcmpW( buf
, rootW
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
661 ok( len
== lstrlenW( rootW
) + 1, "unexpected length %u\n", len
);
664 len
= ARRAY_SIZE(buf
);
665 hr
= IWbemPath_GetNamespaceAt( path
, 1, &len
, buf
);
666 ok( hr
== S_OK
, "got %08x\n", hr
);
667 ok( !lstrcmpW( buf
, cimv2W
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
668 ok( len
== lstrlenW( cimv2W
) + 1, "unexpected length %u\n", len
);
670 IWbemPath_Release( path
);
673 static void test_IWbemPath_RemoveAllNamespaces(void)
675 static const ULONGLONG expected_flags
=
676 WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_IS_INST_REF
|
677 WBEMPATH_INFO_HAS_SUBSCOPES
| WBEMPATH_INFO_V2_COMPLIANT
|
678 WBEMPATH_INFO_CIM_COMPLIANT
| WBEMPATH_INFO_PATH_HAD_SERVER
;
685 if (!(path
= create_path())) return;
687 hr
= IWbemPath_RemoveAllNamespaces( path
);
688 ok( hr
== S_OK
, "got %08x\n", hr
);
690 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path17
);
691 ok( hr
== S_OK
, "got %08x\n", hr
);
694 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
695 ok( hr
== S_OK
, "got %08x\n", hr
);
696 ok( flags
== expected_flags
,
697 "got %s\n", wine_dbgstr_longlong(flags
) );
699 hr
= IWbemPath_RemoveAllNamespaces( path
);
700 ok( hr
== S_OK
, "got %08x\n", hr
);
703 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
704 ok( hr
== S_OK
, "got %08x\n", hr
);
705 ok( flags
== expected_flags
,
706 "got %s\n", wine_dbgstr_longlong(flags
) );
709 len
= ARRAY_SIZE(buf
);
710 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, buf
);
711 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
713 IWbemPath_Release( path
);
716 static void test_IWbemPath_RemoveNamespaceAt(void)
718 static const ULONGLONG expected_flags
=
719 WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_IS_INST_REF
|
720 WBEMPATH_INFO_HAS_SUBSCOPES
| WBEMPATH_INFO_V2_COMPLIANT
|
721 WBEMPATH_INFO_CIM_COMPLIANT
| WBEMPATH_INFO_PATH_HAD_SERVER
;
722 static const WCHAR cimv2W
[] = {'c','i','m','v','2',0};
729 if (!(path
= create_path())) return;
731 hr
= IWbemPath_RemoveNamespaceAt( path
, 0 );
732 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
734 hr
= IWbemPath_SetText( path
, WBEMPATH_CREATE_ACCEPT_ALL
, path17
);
735 ok( hr
== S_OK
, "got %08x\n", hr
);
738 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
739 ok( hr
== S_OK
, "got %08x\n", hr
);
740 ok( flags
== expected_flags
,
741 "got %s\n", wine_dbgstr_longlong(flags
) );
744 hr
= IWbemPath_GetNamespaceCount( path
, &count
);
745 ok( hr
== S_OK
, "got %08x\n", hr
);
746 ok( count
== 2, "got %u\n", count
);
748 hr
= IWbemPath_RemoveNamespaceAt( path
, 0 );
749 ok( hr
== S_OK
, "got %08x\n", hr
);
752 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
753 ok( hr
== S_OK
, "got %08x\n", hr
);
754 ok( flags
== expected_flags
,
755 "got %s\n", wine_dbgstr_longlong(flags
) );
758 hr
= IWbemPath_GetNamespaceCount( path
, &count
);
759 ok( hr
== S_OK
, "got %08x\n", hr
);
760 ok( count
== 1, "got %u\n", count
);
763 len
= ARRAY_SIZE(buf
);
764 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, buf
);
765 ok( hr
== S_OK
, "got %08x\n", hr
);
766 ok( !lstrcmpW( buf
, cimv2W
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
767 ok( len
== lstrlenW( cimv2W
) + 1, "unexpected length %u\n", len
);
769 hr
= IWbemPath_RemoveNamespaceAt( path
, 0 );
770 ok( hr
== S_OK
, "got %08x\n", hr
);
773 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
774 ok( hr
== S_OK
, "got %08x\n", hr
);
775 ok( flags
== expected_flags
,
776 "got %s\n", wine_dbgstr_longlong(flags
) );
779 hr
= IWbemPath_GetNamespaceCount( path
, &count
);
780 ok( hr
== S_OK
, "got %08x\n", hr
);
781 ok( !count
, "got %u\n", count
);
784 len
= ARRAY_SIZE(buf
);
785 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, buf
);
786 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
788 IWbemPath_Release( path
);
791 static void test_IWbemPath_SetNamespaceAt(void)
793 static const ULONGLONG expected_flags
=
794 WBEMPATH_INFO_ANON_LOCAL_MACHINE
| WBEMPATH_INFO_V1_COMPLIANT
|
795 WBEMPATH_INFO_V2_COMPLIANT
| WBEMPATH_INFO_CIM_COMPLIANT
|
796 WBEMPATH_INFO_SERVER_NAMESPACE_ONLY
;
797 static const WCHAR rootW
[] = {'r','o','o','t',0};
798 static const WCHAR cimv2W
[] = {'c','i','m','v','2',0};
805 if (!(path
= create_path())) return;
807 hr
= IWbemPath_SetNamespaceAt( path
, 0, NULL
);
808 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
810 hr
= IWbemPath_SetNamespaceAt( path
, 1, cimv2W
);
811 ok( hr
== WBEM_E_INVALID_PARAMETER
, "got %08x\n", hr
);
813 hr
= IWbemPath_SetNamespaceAt( path
, 0, cimv2W
);
814 ok( hr
== S_OK
, "got %08x\n", hr
);
817 hr
= IWbemPath_GetNamespaceCount( path
, &count
);
818 ok( hr
== S_OK
, "got %08x\n", hr
);
819 ok( count
== 1, "got %u\n", count
);
822 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
823 ok( hr
== S_OK
, "got %08x\n", hr
);
824 ok( flags
== expected_flags
,
825 "got %s\n", wine_dbgstr_longlong(flags
) );
828 len
= ARRAY_SIZE(buf
);
829 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, buf
);
830 ok( hr
== S_OK
, "got %08x\n", hr
);
831 ok( !lstrcmpW( buf
, cimv2W
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
832 ok( len
== lstrlenW( cimv2W
) + 1, "unexpected length %u\n", len
);
834 hr
= IWbemPath_SetNamespaceAt( path
, 0, rootW
);
835 ok( hr
== S_OK
, "got %08x\n", hr
);
838 hr
= IWbemPath_GetInfo( path
, 0, &flags
);
839 ok( hr
== S_OK
, "got %08x\n", hr
);
840 ok( flags
== expected_flags
,
841 "got %s\n", wine_dbgstr_longlong(flags
) );
844 hr
= IWbemPath_GetNamespaceCount( path
, &count
);
845 ok( hr
== S_OK
, "got %08x\n", hr
);
846 ok( count
== 2, "got %u\n", count
);
849 len
= ARRAY_SIZE(buf
);
850 hr
= IWbemPath_GetNamespaceAt( path
, 0, &len
, buf
);
851 ok( hr
== S_OK
, "got %08x\n", hr
);
852 ok( !lstrcmpW( buf
, rootW
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
853 ok( len
== lstrlenW( rootW
) + 1, "unexpected length %u\n", len
);
856 len
= ARRAY_SIZE(buf
);
857 hr
= IWbemPath_GetNamespaceAt( path
, 1, &len
, buf
);
858 ok( hr
== S_OK
, "got %08x\n", hr
);
859 ok( !lstrcmpW( buf
, cimv2W
), "unexpected buffer contents %s\n", wine_dbgstr_w(buf
) );
860 ok( len
== lstrlenW( cimv2W
) + 1, "unexpected length %u\n", len
);
862 IWbemPath_Release( path
);
867 CoInitialize( NULL
);
869 test_IWbemPath_SetText();
870 test_IWbemPath_GetText();
871 test_IWbemPath_GetClassName();
872 test_IWbemPath_SetClassName();
873 test_IWbemPath_GetServer();
874 test_IWbemPath_GetInfo();
875 test_IWbemPath_SetServer();
876 test_IWbemPath_GetNamespaceAt();
877 test_IWbemPath_RemoveAllNamespaces();
878 test_IWbemPath_RemoveNamespaceAt();
879 test_IWbemPath_SetNamespaceAt();