Added:
trunk/testsuites/t_unixodbc_sap/sap_col1.c
Log:
Port of unixODBC/tests/v3/conformance/Other/col1
Added: trunk/testsuites/t_unixodbc_sap/sap_col1.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_col1.c 2007-05-29 12:24:56 UTC (rev 116)
+++ trunk/testsuites/t_unixodbc_sap/sap_col1.c 2007-05-29 12:25:33 UTC (rev 117)
@@ -0,0 +1,93 @@
+#include "t_unixodbc_sap_suite.h"
+
+#define TABLE_NAME "col1"
+#define TABLE_ENGINE "InnoDB"
+
+#define STR_LEN 1024 + 1
+/*
+Ported SAP code: unixODBC/tests/v3/conformance/Other/col1
+*/
+OT_TEST_METHOD(sap_col1)
+{
+ SQLRETURN ret;
+ SQLHANDLE hdbc = get_dbc_handle();
+ SQLHANDLE hstmt;
+ SQLLEN pcb_value = SQL_NTS;
+ SQLCHAR catalog[STR_LEN];
+ SQLCHAR schema[STR_LEN];
+ SQLCHAR table_name[STR_LEN];
+ SQLCHAR column_name[STR_LEN];
+ SQLINTEGER data_type;
+ SQLCHAR type_name[STR_LEN];
+ SQLINTEGER column_size;
+ SQLINTEGER buffer_length;
+ SQLINTEGER decimal_digits;
+ SQLLEN decimal_digits_len;
+ SQLINTEGER num_prec_radix;
+ SQLLEN num_prec_radix_len;
+ SQLINTEGER nullable;
+ SQLCHAR remarks[STR_LEN];
+ SQLCHAR column_default[STR_LEN];
+ SQLINTEGER sql_datatype;
+ SQLINTEGER datetime_subcode;
+ SQLLEN datetime_subcode_len;
+ SQLINTEGER char_octet_length;
+ SQLINTEGER ordinal_position;
+ SQLCHAR is_nullable[STR_LEN];
+ SQLCHAR buffer[STR_LEN];
+
+
+ CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
+ hdbc, SQL_HANDLE_DBC);
+ OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
+
+ CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS \"" TABLE_NAME "\"",
SQL_NTS), hstmt);
+ CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"CREATE TABLE " TABLE_NAME "(E CHAR(10))
ENGINE=\"" TABLE_ENGINE "\"", SQL_NTS),
+ hstmt);
+ CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
+
+ CHECK_SQL_S(SQLColumns(hstmt, NULL, 0, NULL, 0, (SQLCHAR*)TABLE_NAME, SQL_NTS, NULL,
0), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 1, SQL_C_CHAR, catalog, sizeof(catalog), &pcb_value),
hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 2, SQL_C_CHAR, schema, sizeof(schema), &pcb_value),
hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 3, SQL_C_CHAR, table_name, sizeof(table_name),
&pcb_value), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 4, SQL_C_CHAR, column_name, sizeof(column_name),
&pcb_value), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 5, SQL_C_SSHORT, &data_type, 0, &pcb_value),
hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 6, SQL_C_CHAR, type_name, sizeof(type_name),
&pcb_value), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 7, SQL_C_SLONG, &column_size, 0, &pcb_value),
hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 8, SQL_C_SLONG, &buffer_length, 0, &pcb_value),
hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 9, SQL_C_SSHORT, &decimal_digits, 0,
&decimal_digits_len), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 10, SQL_C_SSHORT, &num_prec_radix, 0,
&num_prec_radix_len), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 11, SQL_C_SSHORT, &nullable, 0, &pcb_value),
hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 12, SQL_C_CHAR, remarks, sizeof(remarks),
&pcb_value), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 13, SQL_C_CHAR, column_default, sizeof(column_default),
&pcb_value), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 14, SQL_C_SSHORT, &sql_datatype, 0, &pcb_value),
hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 15, SQL_C_SSHORT, &datetime_subcode, 0,
&datetime_subcode_len), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 16, SQL_C_SLONG, &char_octet_length, 0,
&pcb_value), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 17, SQL_C_SLONG, &ordinal_position, 0,
&pcb_value), hstmt);
+ CHECK_SQL_S(SQLBindCol(hstmt, 18, SQL_C_CHAR, is_nullable, sizeof(is_nullable),
&pcb_value), hstmt);
+
+ for (ret = SQLFetch(hstmt); ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO; ret =
SQLFetch(hstmt))
+ {
+ CHECK_SQL(ret, hstmt, SQL_HANDLE_STMT);
+ /* the original code just prints out the values */
+ OT_ASSERT((0 == strcasecmp((char*)table_name, TABLE_NAME)));
+ OT_ASSERT((0 == strcasecmp((char*)column_name, "E")));
+ OT_ASSERT_INT(SQL_CHAR, data_type);
+ OT_ASSERT((0 == strcasecmp((char*)type_name, "CHAR")));
+ OT_ASSERT_INT(10, column_size);
+ OT_ASSERT((10 == buffer_length || 20 == buffer_length));
+ OT_ASSERT((SQL_NULL_DATA == decimal_digits_len));
+ OT_ASSERT((SQL_NULL_DATA == num_prec_radix_len));
+ OT_ASSERT_INT(SQL_NULLABLE, nullable);
+ OT_ASSERT((0 == strcmp("", (char*)remarks)));
+ OT_ASSERT((0 == strcmp("", (char*)column_default)));
+ unixodbc_sap_sqltype2string(sql_datatype, (char*)buffer, (SQLLEN)sizeof(buffer));
+ OT_ASSERT((0 == strcasecmp("CHAR(n)", (char*)buffer)));
+ OT_ASSERT(SQL_NULL_DATA == datetime_subcode_len);
+ OT_ASSERT_INT(10, char_octet_length);
+ OT_ASSERT_INT(1, ordinal_position);
+ OT_ASSERT((0 == strcmp("YES", (char*)is_nullable)));
+ }
+
+ CHECK_SQL_S(SQLFreeHandle(SQL_HANDLE_STMT, hstmt), hstmt);
+}
| Thread |
|---|
| • ODBC C-tests commit: r117 - trunk/testsuites/t_unixodbc_sap | uwendel | 29 May |