Release 1.6-rc2.
[wine/testsucceed.git] / dlls / oledb32 / tests / database.c
blob518bba70e61f795ac8b208996b99432bd285eb75
1 /* OLEDB Database tests
3 * Copyright 2012 Alistair Leslie-Hughes
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include <stdarg.h>
21 #define COBJMACROS
22 #define NONAMELESSUNION
23 #define NONAMELESSSTRUCT
25 #include "windef.h"
26 #include "winbase.h"
27 #include "ole2.h"
28 #include "msdadc.h"
29 #include "msdasc.h"
30 #include "shlobj.h"
32 #include "wine/test.h"
34 static void test_GetDataSource(WCHAR *initstring)
36 IDataInitialize *datainit = NULL;
37 IDBInitialize *dbinit = NULL;
38 HRESULT hr;
40 trace("Data Source: %s\n", wine_dbgstr_w(initstring));
42 hr = CoCreateInstance(&CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER, &IID_IDataInitialize,(void**)&datainit);
43 ok(hr == S_OK, "got %08x\n", hr);
45 /* a failure to create data source here may indicate provider is simply not present */
46 hr = IDataInitialize_GetDataSource(datainit, NULL, CLSCTX_INPROC_SERVER, initstring, &IID_IDBInitialize, (IUnknown**)&dbinit);
47 if(SUCCEEDED(hr))
49 IDBProperties *props = NULL;
50 IMalloc *ppM = NULL;
52 hr = SHGetMalloc(&ppM);
53 if (FAILED(hr))
55 ok(0, "Couldn't get IMalloc object.\n");
56 goto end;
59 hr = IDBInitialize_QueryInterface(dbinit, &IID_IDBProperties, (void**)&props);
60 ok(hr == S_OK, "got %08x\n", hr);
61 if(SUCCEEDED(hr))
63 ULONG cnt;
64 DBPROPINFOSET *pInfoset;
65 OLECHAR *ary;
67 hr = IDBProperties_GetPropertyInfo(props, 0, NULL, &cnt, &pInfoset, &ary);
68 todo_wine ok(hr == S_OK, "got %08x\n", hr);
69 if(hr == S_OK)
71 ULONG i;
72 for(i =0; i < pInfoset->cPropertyInfos; i++)
74 trace("(0x%04x) '%s' %d\n", pInfoset->rgPropertyInfos[i].dwPropertyID, wine_dbgstr_w(pInfoset->rgPropertyInfos[i].pwszDescription),
75 pInfoset->rgPropertyInfos[i].vtType);
78 IMalloc_Free(ppM, ary);
81 IDBProperties_Release(props);
84 IMalloc_Release(ppM);
86 end:
87 IDBInitialize_Release(dbinit);
90 IDataInitialize_Release(datainit);
93 static void test_database(void)
95 static WCHAR initstring_jet[] = {'P','r','o','v','i','d','e','r','=','M','i','c','r','o','s','o','f','t','.',
96 'J','e','t','.','O','L','E','D','B','.','4','.','0',';',
97 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y',';',
98 'P','e','r','s','i','s','t',' ','S','e','c','u','r','i','t','y',' ','I','n','f','o','=','F','a','l','s','e',';',0};
99 static WCHAR initstring_default[] = {'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y',';',0};
100 IDataInitialize *datainit = NULL;
101 HRESULT hr;
103 hr = CoCreateInstance(&CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER, &IID_IDataInitialize, (void**)&datainit);
104 if (FAILED(hr))
106 win_skip("Unable to load oledb library\n");
107 return;
109 IDataInitialize_Release(datainit);
111 test_GetDataSource(NULL);
112 test_GetDataSource(initstring_jet);
113 test_GetDataSource(initstring_default);
116 START_TEST(database)
118 OleInitialize(NULL);
120 test_database();
122 OleUninitialize();