38#define check_error(a) check_error_(__LINE__, a)
62 ok(bool_ret &&
config_mode ==
i,
"Failed to confirm SQLSetConfigMode.\n");
73 ok(sql_ret ==
SQL_ERROR,
"SQLInstallerError(0...) failed with %d instead of SQL_ERROR\n", sql_ret);
79 ok(sql_ret ==
SQL_NO_DATA,
"SQLInstallerError(>8...) failed with %d instead of SQL_NO_DATA\n", sql_ret);
84 ok(sql_ret ==
SQL_NO_DATA,
"Too many errors when forcing an error for testing\n");
88 ok(sql_ret ==
SQL_SUCCESS_WITH_INFO,
"SQLInstallerError(null addresses) failed with %d instead of SQL_SUCCESS_WITH_INFO\n", sql_ret);
102 ok(!bool_ret,
"SQLInstallDriverManager unexpectedly succeeded\n");
104 "Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
109 ok(!bool_ret,
"SQLInstallDriverManager unexpectedly succeeded\n");
111 "Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
116 ok(!bool_ret,
"SQLInstallDriverManager unexpectedly succeeded\n");
118 "Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
119 ok(path_out == 0xcafe,
"Expected path_out to not have changed\n");
126 win_skip(
"not enough privileges\n");
129 ok(bool_ret,
"SQLInstallDriverManager unexpectedly failed: %ld\n",
132 ok(sql_ret ==
SQL_NO_DATA,
"Expected SQL_NO_DATA, got %d\n", sql_ret);
135 "Expected SQL_SUCCESS_WITH_INFO, got %d\n", sql_ret);
140 ok(bool_ret,
"SQLInstallDriverManager unexpectedly failed: %ld\n",
143 ok(sql_ret ==
SQL_NO_DATA,
"Expected SQL_NO_DATA, got %d\n", sql_ret);
146 "Expected SQL_SUCCESS_WITH_INFO, got %d\n", sql_ret);
148 ok(path_out != 0xcafe,
"Expected path_out to show the correct amount of bytes\n");
153 static const WCHAR odbc_key[] =
L"Software\\ODBC\\ODBC.INI\\wineodbc";
159 ok(!
ret,
"SQLWritePrivateProfileString passed\n");
164 ok(!
ret,
"SQLWritePrivateProfileString passed\n");
169 ok(
ret,
"SQLWritePrivateProfileString failed\n");
175 ok(
ret,
"SQLWritePrivateProfileString failed\n");
189 ok(
ret,
"SQLWritePrivateProfileString failed\n");
218 ok(
ret == 0,
"SQLGetPrivateProfileString returned %d\n",
ret);
223 ok(
ret == 0,
"SQLGetPrivateProfileString returned %d\n",
ret);
228 ok(
ret == 0,
"SQLGetPrivateProfileString returned %d\n",
ret);
232 ok(
ret ==
strlen(
"defaultX"),
"SQLGetPrivateProfileString returned %d\n",
ret);
236 ok(
ret ==
strlen(
"def"),
"SQLGetPrivateProfileString returned %d\n",
ret);
240 ok(
ret ==
strlen(
"default"),
"SQLGetPrivateProfileString returned %d\n",
ret);
244 ok(
ret == 0,
"SQLGetPrivateProfileString returned %d\n",
ret);
248 ok(
ret == 0,
"SQLGetPrivateProfileString returned %d\n",
ret);
252 ok(
ret,
"SQLWritePrivateProfileString failed\n");
258 ok(
ret ==
strlen(
"value0123456789"),
"SQLGetPrivateProfileString returned %d\n",
ret);
262 ok(
ret == 0,
"SQLGetPrivateProfileString returned %d\n",
ret);
265 ok(
ret == 6,
"SQLGetPrivateProfileString returned %d\n",
ret);
269 ok(
ret == (
strlen(
"testing")+1),
"SQLGetPrivateProfileString returned %d\n",
ret);
273 ok(
ret,
"SQLWritePrivateProfileString failed\n");
277 ok(
ret == (
strlen(
"testing") +
strlen(
"value")+2),
"SQLGetPrivateProfileString returned %d\n",
ret);
285 ok(
ret == (
strlen(
"testing")+1),
"SQLGetPrivateProfileString returned %d\n",
ret);
295 ok(
ret == 0,
"SQLGetPrivateProfileString returned %d\n",
ret);
322 ok(
ret == 0,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
327 ok(
ret == 0,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
332 ok(
ret == 0,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
336 ok(
ret ==
lstrlenW(
L"default"),
"SQLGetPrivateProfileStringW returned %d\n",
ret);
344 ok(
ret ==
lstrlenW(
L"default"),
"SQLGetPrivateProfileStringW returned %d\n",
ret);
348 ok(
ret == 0,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
352 ok(
ret == 0,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
356 ok(
ret,
"SQLWritePrivateProfileString failed\n");
362 ok(
ret ==
lstrlenW(
L"value0123456789"),
"SQLGetPrivateProfileStringW returned %d\n",
ret);
366 ok(
ret == 0,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
369 ok(
ret == 6,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
373 ok(
ret ==
lstrlenW(
L"testing") + 1,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
377 ok(
ret,
"SQLWritePrivateProfileString failed\n");
390 ok(
ret ==
lstrlenW(
L"testing") + 1,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
398 ok(
ret == 0,
"SQLGetPrivateProfileStringW returned %d\n",
ret);
416 ok(
ret,
"SQLGetConfigMode failed\n");
419 ok(
ret,
"SQLSetConfigMode failed\n");
428 win_skip(
"not enough privileges\n");
433 ok(
ret,
"SQLWritePrivateProfileString failed\n");
436 ok(
ret,
"SQLWritePrivateProfileString failed\n");
439 ok(
ret,
"SQLGetPrivateProfileStringW failed\n");
442 ok(
ret,
"SQLSetConfigMode failed\n");
445 ok(!
ret,
"SQLGetPrivateProfileStringW succeeded\n");
448 ok(
ret,
"SQLWritePrivateProfileString failed\n");
451 ok(
ret,
"SQLSetConfigMode failed\n");
454 ok(
ret,
"SQLGetPrivateProfileStringW failed\n");
461 ok(
ret,
"SQLWritePrivateProfileString failed\n");
464 ok(
ret,
"SQLSetConfigMode failed\n");
467 ok(
ret,
"SQLGetPrivateProfileStringW failed\n");
477 ok(
ret,
"SQLSetConfigMode failed\n");
481 ok(
ret,
"SQLWritePrivateProfileString failed\n");
484 ok(
ret,
"SQLSetConfigMode failed\n");
487 ok(
ret,
"SQLGetPrivateProfileStringW failed\n");
494 ok(
ret,
"SQLSetConfigMode failed\n");
497 ok(
ret,
"SQLWritePrivateProfileString failed\n");
500 ok(
ret,
"SQLGetPrivateProfileStringW failed\n");
503 ok(
ret,
"SQLWritePrivateProfileString failed\n");
506 ok(
ret,
"SQLGetPrivateProfileStringW failed\n");
512 ok(
ret,
"SQLSetConfigMode failed\n");
515 ok(!
ret,
"SQLGetPrivateProfileStringW succeeded\n");
518 ok(
ret,
"SQLSetConfigMode failed\n");
521 ok(
ret,
"SQLGetPrivateProfileStringW failed\n");
527 ok(
ret,
"SQLSetConfigMode failed\n");
544 ok(!
ret,
"SQLConfigDriver returned %d\n",
ret);
550 ok(
ret,
"SQLInstallDriverEx failed\n");
554 win_skip(
"not enough privileges\n");
562 ok(!
ret,
"SQLConfigDriver failed '%s'\n",
error);
565 ok(
ret,
"SQLConfigDriver failed\n");
570 ok(
ret,
"SQLInstallDriverEx failed\n");
576 ok(!
ret,
"SQLConfigDriver successful\n");
581 ok(
ret,
"SQLConfigDriver failed\n");
595 strcpy(driverpath, syspath);
596 strcat(driverpath,
"\\sample.dll");
636 ok(
ret,
"SQLRemoveDriver failed\n");
637 ok(
cnt == 0,
"SQLRemoveDriver failed %ld\n",
cnt);
641 ok(
ret,
"SQLRemoveDriver failed\n");
642 ok(
cnt == 0,
"SQLRemoveDriver failed %ld\n",
cnt);
662 win_skip(
"not enough privileges\n");
686 strcpy(driverpath, syspath);
687 strcat(driverpath,
"\\sample.dll");
702 ok(
ret,
"SQLRemoveTranslator failed\n");
703 ok(
cnt == 0,
"SQLRemoveTranslator failed %ld\n",
cnt);
707 ok(
ret,
"SQLRemoveTranslator failed\n");
708 ok(
cnt == 0,
"SQLRemoveTranslator failed %ld\n",
cnt);
712 ok(!
ret,
"SQLRemoveTranslator succeeded\n");
713 ok(
cnt == 100,
"SQLRemoveTranslator succeeded %ld\n",
cnt);
716 "SQLInstallTranslatorEx failed %d, %lu\n", sql_ret,
error_code);
730 ok(
ret,
"SQLInstallDriverEx failed: %d\n",
ret);
734 skip(
"not enough privileges\n");
749 ok(!
buffer[9],
"buffer not doubly null-terminated\n");
754 ok(written == 10,
"got written %d\n", written);
755 ok(!
buffer[9],
"buffer not doubly null-terminated\n");
759 ok(!
buffer[written-1] && !
buffer[written-2],
"buffer not doubly null-terminated\n");
767 ok(found,
"installed driver not found\n");
772 ok(written ==
len,
"expected written %d, got %d\n",
len, written);
773 ok(!
buffer[
len-1],
"buffer not doubly null-terminated\n");
778 ok(written ==
len+1,
"expected written %d, got %d\n",
len+1, written);
779 ok(!
buffer[
len],
"buffer not doubly null-terminated\n");
784 ok(written ==
len+2,
"expected written %d, got %d\n",
len+2, written);
785 ok(!
buffer[
len+1],
"buffer not doubly null-terminated\n");
792 static const char *invalid =
"[]{}(),;?*=!@\\";
836 str[4] =
L"[]{}(),;?*=!@\\"[
i];
911 ok(!
ret,
"Found registry key\n");
916 win_skip(
"Doesn't have permission to write a System DSN\n");
921 ok(
ret,
"Failed to find registry key\n");
928 ok(
ret,
"Failed to find registry key\n");
961 ok(!
ret,
"Found registry key\n");
964 ok(
ret,
"Failed to find registry key\n");
#define RegCloseKey(hKey)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
GLuint GLuint GLsizei GLenum type
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
int WINAPI lstrlenA(LPCSTR lpString)
#define ERROR_FILE_NOT_FOUND
static const WCHAR abcdini_key[]
static void test_SQLGetPrivateProfileStringW(void)
static void test_SQLValidDSN(void)
static void test_SQLInstallTranslatorEx(void)
static void test_SQLValidDSNW(void)
static BOOL check_dsn_exists(HKEY key, const WCHAR *dsn)
static void test_SQLGetPrivateProfileString(void)
static void test_SQLInstallDriverEx(void)
static void test_SQLWritePrivateProfileString(void)
static const WCHAR abcd_key[]
static void test_SQLGetInstalledDrivers(void)
static void test_SQLConfigDataSource(void)
static void test_SQLWriteDSNToIni(void)
static void check_error_(int line, DWORD expect)
static void test_SQLConfigMode(void)
static void test_SQLInstallDriverManager(void)
static void test_SQLInstallerError(void)
#define ODBC_INSTALL_COMPLETE
#define ODBC_ERROR_WRITING_SYSINFO_FAILED
#define ODBC_CONFIG_DRIVER
#define ODBC_ERROR_INVALID_PARAM_SEQUENCE
#define ODBC_ERROR_INVALID_DSN
#define ODBC_ERROR_INVALID_STR
#define ODBC_ERROR_COMPONENT_NOT_FOUND
#define ODBC_ERROR_INVALID_BUFF_LEN
#define ODBC_ERROR_INVALID_KEYWORD_VALUE
#define SQL_SUCCESS_WITH_INFO
BOOL WINAPI SQLSetConfigMode(UWORD wConfigMode)
int WINAPI SQLGetPrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR defvalue, LPWSTR buff, int buff_len, LPCWSTR filename)
BOOL WINAPI SQLRemoveTranslator(LPCSTR lpszTranslator, LPDWORD lpdwUsageCount)
BOOL WINAPI SQLGetInstalledDrivers(char *buf, WORD size, WORD *sizeout)
SQLRETURN WINAPI SQLInstallerError(WORD iError, DWORD *pfErrorCode, LPSTR lpszErrorMsg, WORD cbErrorMsgMax, WORD *pcbErrorMsg)
BOOL WINAPI SQLValidDSNW(LPCWSTR lpszDSN)
BOOL WINAPI SQLInstallDriverManager(LPSTR lpszPath, WORD cbPathMax, WORD *pcbPathOut)
BOOL WINAPI SQLConfigDriver(HWND hwnd, WORD request, LPCSTR driver, LPCSTR args, LPSTR msg, WORD msgmax, WORD *msgout)
BOOL WINAPI SQLGetConfigMode(UWORD *pwConfigMode)
BOOL WINAPI SQLInstallDriverEx(LPCSTR lpszDriver, LPCSTR lpszPathIn, LPSTR lpszPathOut, WORD cbPathOutMax, WORD *pcbPathOut, WORD fRequest, LPDWORD lpdwUsageCount)
BOOL WINAPI SQLConfigDataSource(HWND hwnd, WORD request, LPCSTR driver, LPCSTR attributes)
int WINAPI SQLGetPrivateProfileString(LPCSTR section, LPCSTR entry, LPCSTR defvalue, LPSTR buff, int buff_len, LPCSTR filename)
BOOL WINAPI SQLRemoveDSNFromIni(LPCSTR lpszDSN)
BOOL WINAPI SQLWriteDSNToIni(LPCSTR lpszDSN, LPCSTR lpszDriver)
BOOL WINAPI SQLValidDSN(LPCSTR lpszDSN)
BOOL WINAPI SQLWritePrivateProfileString(LPCSTR lpszSection, LPCSTR lpszEntry, LPCSTR lpszString, LPCSTR lpszFilename)
BOOL WINAPI SQLRemoveDriver(LPCSTR lpszDriver, BOOL fRemoveDSN, LPDWORD lpdwUsageCount)
BOOL WINAPI SQLInstallTranslatorEx(LPCSTR lpszTranslator, LPCSTR lpszPathIn, LPSTR lpszPathOut, WORD cbPathOutMax, WORD *pcbPathOut, WORD fRequest, LPDWORD lpdwUsageCount)
BOOL WINAPI SQLWritePrivateProfileStringW(LPCWSTR lpszSection, LPCWSTR lpszEntry, LPCWSTR lpszString, LPCWSTR lpszFilename)
SQLRETURN WINAPI SQLInstallerErrorW(WORD iError, DWORD *pfErrorCode, LPWSTR lpszErrorMsg, WORD cbErrorMsgMax, WORD *pcbErrorMsg)
BOOL WINAPI SQLRemoveDSNFromIniW(LPCWSTR lpszDSN)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER