Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883/* * Copyright 2012 Hans Leidekker for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
#define COBJMACROS
#include <stdarg.h>#include "windows.h"#include "initguid.h"#include "wmiutils.h"#include "wbemcli.h"#include "wine/test.h"
static const WCHAR path1[] = {0};static const WCHAR path2[] = {'\\',0};static const WCHAR path3[] = {'\\','\\','s','e','r','v','e','r',0};static const WCHAR path4[] = {'\\','\\','s','e','r','v','e','r','\\',0};static const WCHAR path5[] = {'\\','\\','.','\\',0};static const WCHAR path6[] = {'/','/','.','/','r','o','o','t','/','c','i','m','v','2',0};static const WCHAR path7[] = {'/','/','.','/','r','o','o','t','/','c','i','m','v','2',':','W','i','n','3','2','_', 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};static const WCHAR path8[] = {'/','r','o','o','t','/','c','i','m','v','2',':','W','i','n','3','2','_', 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};static const WCHAR path9[] = {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};static const WCHAR path10[] = {'/','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};static const WCHAR path11[] = {'/','/','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};static const WCHAR path12[] = {'r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};static const WCHAR path13[] = {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',0};static const WCHAR path14[] = {'W','i','n','3','2','_','O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0};static const WCHAR path15[] = {'r','o','o','t','\\','c','i','m','v','2',0};static const WCHAR path16[] = {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',0};static const WCHAR path17[] = {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d','=', '"','C',':','"',0};static const WCHAR path18[] = {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d','=', '"','C',':','"',',','D','r','i','v','e','T','y','p','e','=','3',0};static const WCHAR path19[] = {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d','=',0};static const WCHAR path20[] = {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d',' ','=',' ', '"','C',':','"',0};
static IWbemPath *create_path(void){ HRESULT hr; IWbemPath *path;
hr = CoCreateInstance( &CLSID_WbemDefPath, NULL, CLSCTX_INPROC_SERVER, &IID_IWbemPath, (void **)&path ); if (hr != S_OK) { win_skip( "can't create WbemDefPath instance, skipping tests\n" ); return NULL; } return path;}
static void test_IWbemPath_SetText(void){ static const struct { const WCHAR *path; ULONG mode; HRESULT ret; BOOL todo; } test[] = { { path1, 0, WBEM_E_INVALID_PARAMETER }, { path1, WBEMPATH_CREATE_ACCEPT_ALL, S_OK }, { path2, 0, WBEM_E_INVALID_PARAMETER }, { path2, WBEMPATH_CREATE_ACCEPT_ALL, S_OK }, { path3, 0, WBEM_E_INVALID_PARAMETER }, { path3, WBEMPATH_CREATE_ACCEPT_ALL, S_OK }, { path4, 0, WBEM_E_INVALID_PARAMETER }, { path4, WBEMPATH_CREATE_ACCEPT_ALL, S_OK }, { path5, 0, WBEM_E_INVALID_PARAMETER }, { path5, WBEMPATH_CREATE_ACCEPT_ALL, S_OK }, { path6, 0, WBEM_E_INVALID_PARAMETER }, { path6, WBEMPATH_CREATE_ACCEPT_ALL, S_OK }, { path7, 0, WBEM_E_INVALID_PARAMETER }, { path7, WBEMPATH_CREATE_ACCEPT_RELATIVE, S_OK }, { path7, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, S_OK }, { path7, WBEMPATH_CREATE_ACCEPT_ALL, S_OK }, { path7, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS, WBEM_E_INVALID_PARAMETER, TRUE }, { path7, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS + 1, S_OK }, { path8, WBEMPATH_CREATE_ACCEPT_RELATIVE, S_OK }, { path8, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, WBEM_E_INVALID_PARAMETER, TRUE }, { path8, WBEMPATH_CREATE_ACCEPT_ALL, S_OK }, { path8, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS, WBEM_E_INVALID_PARAMETER, TRUE }, { path8, WBEMPATH_TREAT_SINGLE_IDENT_AS_NS + 1, S_OK }, { path9, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, S_OK }, { path10, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, WBEM_E_INVALID_PARAMETER, TRUE }, { path11, WBEMPATH_CREATE_ACCEPT_ABSOLUTE, S_OK }, { path15, WBEMPATH_CREATE_ACCEPT_ALL, S_OK } }; IWbemPath *path; HRESULT hr; UINT i;
if (!(path = create_path())) return;
hr = IWbemPath_SetText( path, 0, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
for (i = 0; i < ARRAY_SIZE(test); i++) { hr = IWbemPath_SetText( path, test[i].mode, test[i].path ); todo_wine_if (test[i].todo) ok( hr == test[i].ret, "%u got %08x\n", i, hr );
if (test[i].ret == S_OK) { WCHAR buf[128]; ULONG len;
memset( buf, 0x55, sizeof(buf) ); len = ARRAY_SIZE(buf); hr = IWbemPath_GetText( path, WBEMPATH_GET_ORIGINAL, &len, buf ); ok( hr == S_OK, "%u got %08x\n", i, hr ); ok( !lstrcmpW( buf, test[i].path ), "%u unexpected path %s\n", i, wine_dbgstr_w(buf) ); ok( len == lstrlenW( test[i].path ) + 1, "%u unexpected length %u\n", i, len ); } } IWbemPath_Release( path );}
static void test_IWbemPath_GetText(void){ static const WCHAR serviceW[] = {'W','i','n','3','2','_','S','e','r','v','i','c','e','.','N','a','m','e','=', '\"','S','e','r','v','i','c','e','\"',0}; static const WCHAR classW[] = {'W','i','n','3','2','_','C','l','a','s','s',0}; static const WCHAR expected1W[] = {'r','o','o','t','\\','c','i','m','v','2',':','W','i','n','3','2','_', 'L','o','g','i','c','a','l','D','i','s','k','.','D','e','v','i','c','e','I','d','=', '"','C',':','"',0}; static const WCHAR expected2W[] = {'W','i','n','3','2','_','L','o','g','i','c','a','l','D','i','s','k','.', 'D','e','v','i','c','e','I','d','=','"','C',':','"',0}; static const WCHAR expected3W[] = {'\\','\\','.','\\','r','o','o','t','\\','c','i','m','v','2',0}; WCHAR buf[128]; ULONG len, count; IWbemPath *path; HRESULT hr;
if (!(path = create_path())) return;
hr = IWbemPath_GetText( path, 0, NULL, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetText( path, 0, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr ); ok( len == ARRAY_SIZE(buf), "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, 0, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !buf[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == 1, "unexpected length %u\n", len );
hr = IWbemPath_GetText( path, WBEMPATH_GET_ORIGINAL, NULL, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetText( path, WBEMPATH_GET_ORIGINAL, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr ); ok( len == ARRAY_SIZE(buf), "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_ORIGINAL, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !buf[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == 1, "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); todo_wine ok( !buf[0], "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); todo_wine ok( len == 1, "unexpected length %u\n", len );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path8 ); ok( hr == S_OK, "got %08x\n", hr );
count = 0xdeadbeef; hr = IWbemPath_GetNamespaceCount( path, &count ); ok( hr == S_OK, "got %08x\n", hr ); ok( count == 2, "got %u\n", count );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, path9 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( path9 ) + 1, "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLY, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, path13 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( path13 ) + 1, "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_RELATIVE_ONLY, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, path14 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( path14 ) + 1, "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_NAMESPACE_ONLY, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, path15 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( path15 ) + 1, "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, 0, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, path12 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( path12 ) + 1, "unexpected length %u\n", len );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path1 ); ok( hr == S_OK, "got %08x\n", hr );
count = 0xdeadbeef; hr = IWbemPath_GetNamespaceCount( path, &count ); ok( hr == S_OK, "got %08x\n", hr ); ok( !count, "got %u\n", count );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path6 ); ok( hr == S_OK, "got %08x\n", hr );
count = 0xdeadbeef; hr = IWbemPath_GetNamespaceCount( path, &count ); ok( hr == S_OK, "got %08x\n", hr ); ok( count == 2, "got %u\n", count );
len = 0; hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, NULL ); ok( hr == S_OK, "got %08x\n", hr ); ok( len == lstrlenW( path16 ) + 1, "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, path16 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( path16 ) + 1, "unexpected length %u\n", len );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 ); ok( hr == S_OK, "got %08x\n", hr );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, path17 ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( path17 ) + 1, "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, 0, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, expected1W ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( expected1W ) + 1, "unexpected length %u\n", len );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_RELATIVE_ONLY, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, expected2W ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( expected2W ) + 1, "unexpected length %u\n", len );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path15 ); ok( hr == S_OK, "got %08x\n", hr );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_SERVER_TOO, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, expected3W ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( expected3W ) + 1, "unexpected length %u\n", len );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path18 ); ok( hr == S_OK, "got %08x\n", hr );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path19 ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path20 ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
IWbemPath_Release( path ); if (!(path = create_path())) return;
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, serviceW ); ok( hr == S_OK, "got %08x\n", hr );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_RELATIVE_ONLY, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, serviceW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( serviceW ) + 1, "unexpected length %u\n", len );
IWbemPath_Release( path ); if (!(path = create_path())) return;
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, classW ); ok( hr == S_OK, "got %08x\n", hr );
len = ARRAY_SIZE(buf); memset( buf, 0x55, sizeof(buf) ); hr = IWbemPath_GetText( path, WBEMPATH_GET_RELATIVE_ONLY, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, classW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( classW ) + 1, "unexpected length %u\n", len );
IWbemPath_Release( path );}
static void test_IWbemPath_GetClassName(void){ static const WCHAR classW[] = {'W','i','n','3','2','_','L','o','g','i','c','a','l','D','i','s','k',0}; IWbemPath *path; HRESULT hr; WCHAR buf[32]; ULONG len;
if (!(path = create_path())) return;
hr = IWbemPath_GetClassName( path, NULL, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
len = 0; hr = IWbemPath_GetClassName( path, &len, NULL ); ok( hr == WBEM_E_INVALID_OBJECT_PATH, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetClassName( path, &len, buf ); ok( hr == WBEM_E_INVALID_OBJECT_PATH, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetClassName( path, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr ); ok( len == ARRAY_SIZE(buf), "unexpected length %u\n", len );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 ); ok( hr == S_OK, "got %08x\n", hr );
len = 0; hr = IWbemPath_GetClassName( path, &len, NULL ); ok( hr == S_OK, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetClassName( path, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr ); ok( len == ARRAY_SIZE(buf), "unexpected length %u\n", len );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetClassName( path, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, classW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( classW ) + 1, "unexpected length %u\n", len );
IWbemPath_Release( path );}
static void test_IWbemPath_SetClassName(void){ static const WCHAR classW[] = {'c','l','a','s','s',0}; static const WCHAR emptyW[] = {0}; IWbemPath *path; WCHAR buf[16]; ULONG len; ULONGLONG flags; HRESULT hr;
if (!(path = create_path())) return;
hr = IWbemPath_SetClassName( path, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
hr = IWbemPath_SetClassName( path, emptyW ); ok( hr == S_OK, "got %08x\n", hr );
hr = IWbemPath_SetClassName( path, classW ); ok( hr == S_OK, "got %08x\n", hr );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetClassName( path, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, classW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_IS_CLASS_REF | WBEMPATH_INFO_HAS_SUBSCOPES | WBEMPATH_INFO_V2_COMPLIANT | WBEMPATH_INFO_CIM_COMPLIANT), "got %s\n", wine_dbgstr_longlong(flags) );
IWbemPath_Release( path );}
static void test_IWbemPath_GetServer(void){ static const WCHAR dotW[] = {'.',0}; IWbemPath *path; HRESULT hr; WCHAR buf[32]; ULONG len;
if (!(path = create_path())) return;
hr = IWbemPath_GetServer( path, NULL, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
len = 0; hr = IWbemPath_GetServer( path, &len, NULL ); ok( hr == WBEM_E_NOT_AVAILABLE, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetServer( path, &len, buf ); ok( hr == WBEM_E_NOT_AVAILABLE, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetServer( path, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr ); ok( len == ARRAY_SIZE(buf), "unexpected length %u\n", len );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 ); ok( hr == S_OK, "got %08x\n", hr );
len = 0; hr = IWbemPath_GetServer( path, &len, NULL ); ok( hr == S_OK, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetServer( path, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr ); ok( len == ARRAY_SIZE(buf), "unexpected length %u\n", len );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetServer( path, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, dotW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( dotW ) + 1, "unexpected length %u\n", len );
IWbemPath_Release( path );}
static void test_IWbemPath_GetInfo(void){ IWbemPath *path; HRESULT hr; ULONGLONG resp;
if (!(path = create_path())) return;
hr = IWbemPath_GetInfo( path, 0, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
hr = IWbemPath_GetInfo( path, 1, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
resp = 0xdeadbeef; hr = IWbemPath_GetInfo( path, 0, &resp ); ok( hr == S_OK, "got %08x\n", hr ); ok( resp == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_SERVER_NAMESPACE_ONLY), "got %s\n", wine_dbgstr_longlong(resp) );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 ); ok( hr == S_OK, "got %08x\n", hr );
hr = IWbemPath_GetInfo( path, 0, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
hr = IWbemPath_GetInfo( path, 1, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
resp = 0xdeadbeef; hr = IWbemPath_GetInfo( path, 0, &resp ); ok( hr == S_OK, "got %08x\n", hr ); ok( resp == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_IS_INST_REF | WBEMPATH_INFO_HAS_SUBSCOPES | WBEMPATH_INFO_V2_COMPLIANT | WBEMPATH_INFO_CIM_COMPLIANT | WBEMPATH_INFO_PATH_HAD_SERVER), "got %s\n", wine_dbgstr_longlong(resp) );
IWbemPath_Release( path ); if (!(path = create_path())) return;
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path12 ); ok( hr == S_OK, "got %08x\n", hr );
resp = 0xdeadbeef; hr = IWbemPath_GetInfo( path, 0, &resp ); ok( hr == S_OK, "got %08x\n", hr ); ok( resp == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_IS_CLASS_REF | WBEMPATH_INFO_HAS_SUBSCOPES | WBEMPATH_INFO_V2_COMPLIANT | WBEMPATH_INFO_CIM_COMPLIANT), "got %s\n", wine_dbgstr_longlong(resp) );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path1 ); ok( hr == S_OK, "got %08x\n", hr );
resp = 0xdeadbeef; hr = IWbemPath_GetInfo( path, 0, &resp ); ok( hr == S_OK, "got %08x\n", hr ); ok( resp == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_SERVER_NAMESPACE_ONLY), "got %s\n", wine_dbgstr_longlong(resp) );
IWbemPath_Release( path );}
static void test_IWbemPath_SetServer(void){ static const WCHAR serverW[] = {'s','e','r','v','e','r',0}; static const WCHAR emptyW[] = {0}; IWbemPath *path; WCHAR buf[16]; ULONG len; ULONGLONG flags; HRESULT hr;
if (!(path = create_path())) return;
hr = IWbemPath_SetServer( path, NULL ); ok( hr == S_OK, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetServer( path, &len, buf ); ok( hr == WBEM_E_NOT_AVAILABLE, "got %08x\n", hr );
hr = IWbemPath_SetServer( path, emptyW ); ok( hr == S_OK, "got %08x\n", hr );
hr = IWbemPath_SetServer( path, serverW ); ok( hr == S_OK, "got %08x\n", hr );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetServer( path, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, serverW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == (WBEMPATH_INFO_HAS_MACHINE_NAME | WBEMPATH_INFO_V1_COMPLIANT | WBEMPATH_INFO_V2_COMPLIANT | WBEMPATH_INFO_CIM_COMPLIANT | WBEMPATH_INFO_SERVER_NAMESPACE_ONLY | WBEMPATH_INFO_PATH_HAD_SERVER), "got %s\n", wine_dbgstr_longlong(flags) );
hr = IWbemPath_SetServer( path, NULL ); ok( hr == S_OK, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetServer( path, &len, buf ); ok( hr == WBEM_E_NOT_AVAILABLE, "got %08x\n", hr );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == (WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_SERVER_NAMESPACE_ONLY), "got %s\n", wine_dbgstr_longlong(flags) );
IWbemPath_Release( path );}
static void test_IWbemPath_GetNamespaceAt(void){ static const WCHAR rootW[] = {'r','o','o','t',0}; static const WCHAR cimv2W[] = {'c','i','m','v','2',0}; IWbemPath *path; HRESULT hr; WCHAR buf[32]; ULONG len;
if (!(path = create_path())) return;
hr = IWbemPath_GetNamespaceAt( path, 0, NULL, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
len = 0; hr = IWbemPath_GetNamespaceAt( path, 0, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, buf ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr ); ok( len == ARRAY_SIZE(buf), "unexpected length %u\n", len );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 ); ok( hr == S_OK, "got %08x\n", hr );
len = 0; hr = IWbemPath_GetNamespaceAt( path, 2, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr ); ok( len == ARRAY_SIZE(buf), "unexpected length %u\n", len );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, rootW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( rootW ) + 1, "unexpected length %u\n", len );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 1, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, cimv2W ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( cimv2W ) + 1, "unexpected length %u\n", len );
IWbemPath_Release( path );}
static void test_IWbemPath_RemoveAllNamespaces(void){ static const ULONGLONG expected_flags = WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_IS_INST_REF | WBEMPATH_INFO_HAS_SUBSCOPES | WBEMPATH_INFO_V2_COMPLIANT | WBEMPATH_INFO_CIM_COMPLIANT | WBEMPATH_INFO_PATH_HAD_SERVER; IWbemPath *path; WCHAR buf[16]; ULONG len; ULONGLONG flags; HRESULT hr;
if (!(path = create_path())) return;
hr = IWbemPath_RemoveAllNamespaces( path ); ok( hr == S_OK, "got %08x\n", hr );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 ); ok( hr == S_OK, "got %08x\n", hr );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == expected_flags, "got %s\n", wine_dbgstr_longlong(flags) );
hr = IWbemPath_RemoveAllNamespaces( path ); ok( hr == S_OK, "got %08x\n", hr );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == expected_flags, "got %s\n", wine_dbgstr_longlong(flags) );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, buf ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
IWbemPath_Release( path );}
static void test_IWbemPath_RemoveNamespaceAt(void){ static const ULONGLONG expected_flags = WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_IS_INST_REF | WBEMPATH_INFO_HAS_SUBSCOPES | WBEMPATH_INFO_V2_COMPLIANT | WBEMPATH_INFO_CIM_COMPLIANT | WBEMPATH_INFO_PATH_HAD_SERVER; static const WCHAR cimv2W[] = {'c','i','m','v','2',0}; IWbemPath *path; WCHAR buf[16]; ULONG len, count; ULONGLONG flags; HRESULT hr;
if (!(path = create_path())) return;
hr = IWbemPath_RemoveNamespaceAt( path, 0 ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
hr = IWbemPath_SetText( path, WBEMPATH_CREATE_ACCEPT_ALL, path17 ); ok( hr == S_OK, "got %08x\n", hr );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == expected_flags, "got %s\n", wine_dbgstr_longlong(flags) );
count = 0xdeadbeef; hr = IWbemPath_GetNamespaceCount( path, &count ); ok( hr == S_OK, "got %08x\n", hr ); ok( count == 2, "got %u\n", count );
hr = IWbemPath_RemoveNamespaceAt( path, 0 ); ok( hr == S_OK, "got %08x\n", hr );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == expected_flags, "got %s\n", wine_dbgstr_longlong(flags) );
count = 0xdeadbeef; hr = IWbemPath_GetNamespaceCount( path, &count ); ok( hr == S_OK, "got %08x\n", hr ); ok( count == 1, "got %u\n", count );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, cimv2W ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( cimv2W ) + 1, "unexpected length %u\n", len );
hr = IWbemPath_RemoveNamespaceAt( path, 0 ); ok( hr == S_OK, "got %08x\n", hr );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == expected_flags, "got %s\n", wine_dbgstr_longlong(flags) );
count = 0xdeadbeef; hr = IWbemPath_GetNamespaceCount( path, &count ); ok( hr == S_OK, "got %08x\n", hr ); ok( !count, "got %u\n", count );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, buf ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
IWbemPath_Release( path );}
static void test_IWbemPath_SetNamespaceAt(void){ static const ULONGLONG expected_flags = WBEMPATH_INFO_ANON_LOCAL_MACHINE | WBEMPATH_INFO_V1_COMPLIANT | WBEMPATH_INFO_V2_COMPLIANT | WBEMPATH_INFO_CIM_COMPLIANT | WBEMPATH_INFO_SERVER_NAMESPACE_ONLY; static const WCHAR rootW[] = {'r','o','o','t',0}; static const WCHAR cimv2W[] = {'c','i','m','v','2',0}; IWbemPath *path; WCHAR buf[16]; ULONG len, count; ULONGLONG flags; HRESULT hr;
if (!(path = create_path())) return;
hr = IWbemPath_SetNamespaceAt( path, 0, NULL ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
hr = IWbemPath_SetNamespaceAt( path, 1, cimv2W ); ok( hr == WBEM_E_INVALID_PARAMETER, "got %08x\n", hr );
hr = IWbemPath_SetNamespaceAt( path, 0, cimv2W ); ok( hr == S_OK, "got %08x\n", hr );
count = 0xdeadbeef; hr = IWbemPath_GetNamespaceCount( path, &count ); ok( hr == S_OK, "got %08x\n", hr ); ok( count == 1, "got %u\n", count );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == expected_flags, "got %s\n", wine_dbgstr_longlong(flags) );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, cimv2W ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( cimv2W ) + 1, "unexpected length %u\n", len );
hr = IWbemPath_SetNamespaceAt( path, 0, rootW ); ok( hr == S_OK, "got %08x\n", hr );
flags = 0; hr = IWbemPath_GetInfo( path, 0, &flags ); ok( hr == S_OK, "got %08x\n", hr ); ok( flags == expected_flags, "got %s\n", wine_dbgstr_longlong(flags) );
count = 0xdeadbeef; hr = IWbemPath_GetNamespaceCount( path, &count ); ok( hr == S_OK, "got %08x\n", hr ); ok( count == 2, "got %u\n", count );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 0, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, rootW ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( rootW ) + 1, "unexpected length %u\n", len );
buf[0] = 0; len = ARRAY_SIZE(buf); hr = IWbemPath_GetNamespaceAt( path, 1, &len, buf ); ok( hr == S_OK, "got %08x\n", hr ); ok( !lstrcmpW( buf, cimv2W ), "unexpected buffer contents %s\n", wine_dbgstr_w(buf) ); ok( len == lstrlenW( cimv2W ) + 1, "unexpected length %u\n", len );
IWbemPath_Release( path );}
START_TEST (path){ CoInitialize( NULL );
test_IWbemPath_SetText(); test_IWbemPath_GetText(); test_IWbemPath_GetClassName(); test_IWbemPath_SetClassName(); test_IWbemPath_GetServer(); test_IWbemPath_GetInfo(); test_IWbemPath_SetServer(); test_IWbemPath_GetNamespaceAt(); test_IWbemPath_RemoveAllNamespaces(); test_IWbemPath_RemoveNamespaceAt(); test_IWbemPath_SetNamespaceAt();
CoUninitialize();}