mshtml: Don't check if script element was already parsed in doc_insert_script.
[wine] / dlls / wmiutils / tests / path.c
1 /*
2  * Copyright 2012 Hans Leidekker for CodeWeavers
3  *
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.
8  *
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.
13  *
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
17  */
18
19 #define COBJMACROS
20
21 #include <stdarg.h>
22 #include "windows.h"
23 #include "initguid.h"
24 #include "wmiutils.h"
25 #include "wbemcli.h"
26 #include "wine/test.h"
27
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','=','"','C',':','"',0};
63
64 static IWbemPath *create_path(void)
65 {
66     HRESULT hr;
67     IWbemPath *path;
68
69     hr = CoCreateInstance( &CLSID_WbemDefPath, NULL, CLSCTX_INPROC_SERVER, &IID_IWbemPath, (void **)&path );
70     if (hr != S_OK)
71     {
72         win_skip( "can't create WbemDefPath instance, skipping tests\n" );
73         return NULL;
74     }
75     return path;
76 }
77
78 static void test_IWbemPath_SetText(void)
79 {
80     static const struct
81     {
82         const WCHAR *path;
83         ULONG        mode;
84         HRESULT      ret;
85         int          todo;
86     } test[] =
87     {
88         { path1, 0, WBEM_E_INVALID_PARAMETER },
89         { path1, WBEMPATH_CREATE_ACCEPT_ALL, S_OK },
90         { path2, 0, WBEM_E_INVALID_PARAMETER },
91         { path2, WBEMPATH_CREATE_ACCEPT_ALL, S_OK },
92         { path3, 0, WBEM_E_INVALID_PARAMETER },
93         { path3, WBEMPATH_CREATE_ACCEPT_ALL, S_OK },
94         { path4, 0, WBEM_E_INVALID_PARAMETER },
95         { path4, WBEMPATH_CREATE_ACCEPT_ALL, S_OK },
96         { path5, 0, WBEM_E_INVALID_PARAMETER },
97         { path5, WBEMPATH_CREATE_ACCEPT_ALL, S_OK },
98         { path6, 0, WBEM_E_INVALID_PARAMETER },
99         { path6, WBEMPATH_CREATE_ACCEPT_ALL, S_OK },
100         { path7, 0, WBEM_E_INVALID_PARAMETER },
101         { path7, WBEMPATH_CREATE_ACCEPT_RELATIVE, S_OK },
102         { path7, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, S_OK },
103         { path7, WBEMPATH_CREATE_ACCEPT_ALL, S_OK },
104         { path7, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS, WBEM_E_INVALID_PARAMETER, 1 },
105         { path7, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS + 1, S_OK },
106         { path8, WBEMPATH_CREATE_ACCEPT_RELATIVE, S_OK },
107         { path8, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, WBEM_E_INVALID_PARAMETER, 1 },
108         { path8, WBEMPATH_CREATE_ACCEPT_ALL, S_OK },
109         { path8, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS, WBEM_E_INVALID_PARAMETER, 1 },
110         { path8, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS + 1, S_OK },
111         { path9, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, S_OK },
112         { path10, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, WBEM_E_INVALID_PARAMETER, 1 },
113         { path11, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, S_OK }
114     };
115     IWbemPath *path;
116     HRESULT hr;
117     UINT i;
118
119     if (!(path = create_path())) return;
120
121     hr = IWbemPath_SetText( path, 0, NULL );
122     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
123
124     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, NULL );
125     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
126
127     for (i = 0; i < sizeof(test)/sizeof(test[0]); i++)
128     {
129         hr = IWbemPath_SetText( path, test[i].mode, test[i].path );
130         if (test[i].todo) todo_wine ok( hr == test[i].ret, "%u got %08x\n", i, hr );
131         else ok( hr == test[i].ret, "%u got %08x\n", i, hr );
132
133         if (test[i].ret == S_OK)
134         {
135             WCHAR buf[128];
136             ULONG len;
137
138             memset( buf, 0x55, sizeof(buf) );
139             len = sizeof(buf)/sizeof(buf[0]);
140             hr = IWbemPath_GetText( path, WBEMPATH_GET_ORIGINAL, &len, buf );
141             ok( hr == S_OK, "%u got %08x\n", i, hr );
142             ok( !lstrcmpW( buf, test[i].path ), "%u unexpected path %s\n", i, wine_dbgstr_w(buf) );
143             ok( len == lstrlenW( test[i].path ) + 1, "%u unexpected length %u\n", i, len );
144         }
145     }
146     IWbemPath_Release( path );
147 }
148
149 static void test_IWbemPath_GetText(void)
150 {
151     WCHAR buf[128];
152     ULONG len, count;
153     IWbemPath *path;
154     HRESULT hr;
155
156     if (!(path = create_path())) return;
157
158     hr = IWbemPath_GetText( path, 0, NULL, NULL );
159     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
160
161     len = sizeof(buf)/sizeof(buf[0]);
162     hr = IWbemPath_GetText( path, 0, &len, NULL );
163     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
164     ok( len == sizeof(buf)/sizeof(buf[0]), "unexpected length %u\n", len );
165
166     len = sizeof(buf)/sizeof(buf[0]);
167     memset( buf, 0x55, sizeof(buf) );
168     hr = IWbemPath_GetText( path, 0, &len, buf );
169     ok( hr == S_OK, "got %08x\n", hr );
170     ok( !buf[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
171     ok( len == 1, "unexpected length %u\n", len );
172
173     hr = IWbemPath_GetText( path, WBEMPATH_GET_ORIGINAL, NULL, NULL );
174     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
175
176     len = sizeof(buf)/sizeof(buf[0]);
177     hr = IWbemPath_GetText( path, WBEMPATH_GET_ORIGINAL, &len, NULL );
178     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
179     ok( len == sizeof(buf)/sizeof(buf[0]), "unexpected length %u\n", len );
180
181     len = sizeof(buf)/sizeof(buf[0]);
182     memset( buf, 0x55, sizeof(buf) );
183     hr = IWbemPath_GetText( path, WBEMPATH_GET_ORIGINAL, &len, buf );
184     ok( hr == S_OK, "got %08x\n", hr );
185     ok( !buf[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
186     ok( len == 1, "unexpected length %u\n", len );
187
188     len = sizeof(buf)/sizeof(buf[0]);
189     memset( buf, 0x55, sizeof(buf) );
190     hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf );
191     ok( hr == S_OK, "got %08x\n", hr );
192     todo_wine ok( !buf[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
193     todo_wine ok( len == 1, "unexpected length %u\n", len );
194
195     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path8 );
196     ok( hr == S_OK, "got %08x\n", hr );
197
198     count = 0xdeadbeef;
199     hr = IWbemPath_GetNamespaceCount( path, &count );
200     ok( hr == S_OK, "got %08x\n", hr );
201     ok( count == 2, "got %u\n", count );
202
203     len = sizeof(buf)/sizeof(buf[0]);
204     memset( buf, 0x55, sizeof(buf) );
205     hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf );
206     ok( hr == S_OK, "got %08x\n", hr );
207     ok( !lstrcmpW( buf, path9 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
208     ok( len == lstrlenW( path9 ) + 1, "unexpected length %u\n", len );
209
210     len = sizeof(buf)/sizeof(buf[0]);
211     memset( buf, 0x55, sizeof(buf) );
212     hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLY, &len, buf );
213     ok( hr == S_OK, "got %08x\n", hr );
214     ok( !lstrcmpW( buf, path13 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
215     ok( len == lstrlenW( path13 ) + 1, "unexpected length %u\n", len );
216
217     len = sizeof(buf)/sizeof(buf[0]);
218     memset( buf, 0x55, sizeof(buf) );
219     hr = IWbemPath_GetText( path, WBEMPATH_GET_RELATIVE_ONLY, &len, buf );
220     ok( hr == S_OK, "got %08x\n", hr );
221     ok( !lstrcmpW( buf, path14 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
222     ok( len == lstrlenW( path14 ) + 1, "unexpected length %u\n", len );
223
224     len = sizeof(buf)/sizeof(buf[0]);
225     memset( buf, 0x55, sizeof(buf) );
226     hr = IWbemPath_GetText( path, WBEMPATH_GET_NAMESPACE_ONLY, &len, buf );
227     ok( hr == S_OK, "got %08x\n", hr );
228     ok( !lstrcmpW( buf, path15 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
229     ok( len == lstrlenW( path15 ) + 1, "unexpected length %u\n", len );
230
231     len = sizeof(buf)/sizeof(buf[0]);
232     memset( buf, 0x55, sizeof(buf) );
233     hr = IWbemPath_GetText( path, 0, &len, buf );
234     ok( hr == S_OK, "got %08x\n", hr );
235     ok( !lstrcmpW( buf, path12 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
236     ok( len == lstrlenW( path12 ) + 1, "unexpected length %u\n", len );
237
238     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path1 );
239     ok( hr == S_OK, "got %08x\n", hr );
240
241     count = 0xdeadbeef;
242     hr = IWbemPath_GetNamespaceCount( path, &count );
243     ok( hr == S_OK, "got %08x\n", hr );
244     ok( !count, "got %u\n", count );
245
246     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path6 );
247     ok( hr == S_OK, "got %08x\n", hr );
248
249     count = 0xdeadbeef;
250     hr = IWbemPath_GetNamespaceCount( path, &count );
251     ok( hr == S_OK, "got %08x\n", hr );
252     ok( count == 2, "got %u\n", count );
253
254     len = 0;
255     hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, NULL );
256     ok( hr == S_OK, "got %08x\n", hr );
257     ok( len == lstrlenW( path16 ) + 1, "unexpected length %u\n", len );
258
259     len = sizeof(buf)/sizeof(buf[0]);
260     memset( buf, 0x55, sizeof(buf) );
261     hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf );
262     ok( hr == S_OK, "got %08x\n", hr );
263     ok( !lstrcmpW( buf, path16 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
264     ok( len == lstrlenW( path16 ) + 1, "unexpected length %u\n", len );
265
266     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 );
267     ok( hr == S_OK, "got %08x\n", hr );
268
269     len = sizeof(buf)/sizeof(buf[0]);
270     memset( buf, 0x55, sizeof(buf) );
271     hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf );
272     ok( hr == S_OK, "got %08x\n", hr );
273     todo_wine ok( !lstrcmpW( buf, path17 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
274     todo_wine ok( len == lstrlenW( path17 ) + 1, "unexpected length %u\n", len );
275
276     IWbemPath_Release( path );
277 }
278
279 static void test_IWbemPath_GetClassName(void)
280 {
281     static const WCHAR classW[] = {'W','i','n','3','2','_','L','o','g','i','c','a','l','D','i','s','k',0};
282     IWbemPath *path;
283     HRESULT hr;
284     WCHAR buf[32];
285     ULONG len;
286
287     if (!(path = create_path())) return;
288
289     hr = IWbemPath_GetClassName( path, NULL, NULL );
290     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
291
292     len = 0;
293     hr = IWbemPath_GetClassName( path, &len, NULL );
294     ok( hr == WBEM_E_INVALID_OBJECT_PATH, "got %08x\n", hr );
295
296     len = sizeof(buf) / sizeof(buf[0]);
297     hr = IWbemPath_GetClassName( path, &len, buf );
298     ok( hr == WBEM_E_INVALID_OBJECT_PATH, "got %08x\n", hr );
299
300     len = sizeof(buf) / sizeof(buf[0]);
301     hr = IWbemPath_GetClassName( path, &len, NULL );
302     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
303     ok( len == sizeof(buf) / sizeof(buf[0]), "unexpected length %u\n", len );
304
305     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 );
306     ok( hr == S_OK, "got %08x\n", hr );
307
308     len = 0;
309     hr = IWbemPath_GetClassName( path, &len, NULL );
310     ok( hr == S_OK, "got %08x\n", hr );
311
312     len = sizeof(buf) / sizeof(buf[0]);
313     hr = IWbemPath_GetClassName( path, &len, NULL );
314     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
315     ok( len == sizeof(buf) / sizeof(buf[0]), "unexpected length %u\n", len );
316
317     len = sizeof(buf) / sizeof(buf[0]);
318     hr = IWbemPath_GetClassName( path, &len, buf );
319     ok( hr == S_OK, "got %08x\n", hr );
320     ok( !lstrcmpW( buf, classW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
321     ok( len == lstrlenW( classW ) + 1, "unexpected length %u\n", len );
322
323     IWbemPath_Release( path );
324 }
325
326 static void test_IWbemPath_GetServer(void)
327 {
328     static const WCHAR dotW[] = {'.',0};
329     IWbemPath *path;
330     HRESULT hr;
331     WCHAR buf[32];
332     ULONG len;
333
334     if (!(path = create_path())) return;
335
336     hr = IWbemPath_GetServer( path, NULL, NULL );
337     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
338
339     len = 0;
340     hr = IWbemPath_GetServer( path, &len, NULL );
341     ok( hr == WBEM_E_NOT_AVAILABLE, "got %08x\n", hr );
342
343     len = sizeof(buf) / sizeof(buf[0]);
344     hr = IWbemPath_GetServer( path, &len, buf );
345     ok( hr == WBEM_E_NOT_AVAILABLE, "got %08x\n", hr );
346
347     len = sizeof(buf) / sizeof(buf[0]);
348     hr = IWbemPath_GetServer( path, &len, NULL );
349     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
350     ok( len == sizeof(buf) / sizeof(buf[0]), "unexpected length %u\n", len );
351
352     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 );
353     ok( hr == S_OK, "got %08x\n", hr );
354
355     len = 0;
356     hr = IWbemPath_GetServer( path, &len, NULL );
357     ok( hr == S_OK, "got %08x\n", hr );
358
359     len = sizeof(buf) / sizeof(buf[0]);
360     hr = IWbemPath_GetServer( path, &len, NULL );
361     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
362     ok( len == sizeof(buf) / sizeof(buf[0]), "unexpected length %u\n", len );
363
364     len = sizeof(buf) / sizeof(buf[0]);
365     hr = IWbemPath_GetServer( path, &len, buf );
366     ok( hr == S_OK, "got %08x\n", hr );
367     ok( !lstrcmpW( buf, dotW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
368     ok( len == lstrlenW( dotW ) + 1, "unexpected length %u\n", len );
369
370     IWbemPath_Release( path );
371 }
372
373 static void test_IWbemPath_GetInfo(void)
374 {
375     IWbemPath *path;
376     HRESULT hr;
377     ULONGLONG resp;
378
379     if (!(path = create_path())) return;
380
381     hr = IWbemPath_GetInfo( path, 0, NULL );
382     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
383
384     hr = IWbemPath_GetInfo( path, 1, NULL );
385     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
386
387     resp = 0xdeadbeef;
388     hr = IWbemPath_GetInfo( path, 0, &resp );
389     ok( hr == S_OK, "got %08x\n", hr );
390     ok( resp == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_SERVER_NAMESPACE_ONLY),
391         "got %lx%08lx\n", (unsigned long)(resp >> 32), (unsigned long)resp );
392
393     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 );
394     ok( hr == S_OK, "got %08x\n", hr );
395
396     hr = IWbemPath_GetInfo( path, 0, NULL );
397     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
398
399     hr = IWbemPath_GetInfo( path, 1, NULL );
400     ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
401
402     resp = 0xdeadbeef;
403     hr = IWbemPath_GetInfo( path, 0, &resp );
404     ok( hr == S_OK, "got %08x\n", hr );
405     ok( resp == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_IS_INST_REF |
406                  WBEMPATH_INFO_HAS_SUBSCOPES | WBEMPATH_INFO_V2_COMPLIANT |
407                  WBEMPATH_INFO_CIM_COMPLIANT | WBEMPATH_INFO_PATH_HAD_SERVER),
408         "got %lx%08lx\n", (unsigned long)(resp >> 32), (unsigned long)resp );
409
410     IWbemPath_Release( path );
411     if (!(path = create_path())) return;
412
413     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path12 );
414     ok( hr == S_OK, "got %08x\n", hr );
415
416     resp = 0xdeadbeef;
417     hr = IWbemPath_GetInfo( path, 0, &resp );
418     ok( hr == S_OK, "got %08x\n", hr );
419     ok( resp == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_IS_CLASS_REF |
420                  WBEMPATH_INFO_HAS_SUBSCOPES | WBEMPATH_INFO_V2_COMPLIANT |
421                  WBEMPATH_INFO_CIM_COMPLIANT),
422         "got %lx%08lx\n", (unsigned long)(resp >> 32), (unsigned long)resp );
423
424     hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path1 );
425     ok( hr == S_OK, "got %08x\n", hr );
426
427     resp = 0xdeadbeef;
428     hr = IWbemPath_GetInfo( path, 0, &resp );
429     ok( hr == S_OK, "got %08x\n", hr );
430     ok( resp == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_SERVER_NAMESPACE_ONLY),
431         "got %lx%08lx\n", (unsigned long)(resp >> 32), (unsigned long)resp );
432
433     IWbemPath_Release( path );
434 }
435
436 START_TEST (path)
437 {
438     CoInitialize( NULL );
439
440     test_IWbemPath_SetText();
441     test_IWbemPath_GetText();
442     test_IWbemPath_GetClassName();
443     test_IWbemPath_GetServer();
444     test_IWbemPath_GetInfo();
445
446     CoUninitialize();
447 }