List:Commits« Previous MessageNext Message »
From:uwendel Date:May 29 2007 2:26pm
Subject:ODBC C-tests commit: r118 - trunk/testsuites/t_unixodbc_sap
View as plain text  
Modified:
   trunk/testsuites/t_unixodbc_sap/sap_23000.c
   trunk/testsuites/t_unixodbc_sap/sap_async.c
   trunk/testsuites/t_unixodbc_sap/sap_bindparm.c
   trunk/testsuites/t_unixodbc_sap/sap_cnvchar.c
   trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c
   trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h
Log:
Addition of col1/cola tests and fixing some warnings that -Wall -pedantic showed on my box


Modified: trunk/testsuites/t_unixodbc_sap/sap_23000.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_23000.c	2007-05-29 12:25:33 UTC (rev 117)
+++ trunk/testsuites/t_unixodbc_sap/sap_23000.c	2007-05-29 12:26:21 UTC (rev 118)
@@ -17,16 +17,16 @@
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
 
-  CHECK_SQL_S(SQLExecDirect(hstmt, "DROP TABLE IF EXISTS \"" TABLE_NAME "\"", SQL_NTS),
hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS \"" TABLE_NAME "\"",
SQL_NTS), hstmt);
   CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
 
-  CHECK_SQL_S(SQLExecDirect(hstmt, "CREATE TABLE \"" TABLE_NAME "\" (col1 CHAR(10)
DEFAULT NULL) ENGINE=\"" TABLE_ENGINE "\"", SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"CREATE TABLE \"" TABLE_NAME "\" (col1
CHAR(10) DEFAULT NULL) ENGINE=\"" TABLE_ENGINE "\"", SQL_NTS), hstmt);
   CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
 
   CHECK_SQL_S(SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 10, 0,
NULL, 0, &cb_value), hstmt);
   cb_value = SQL_NULL_DATA;
 
-  CHECK_SQL_S(SQLExecDirect(hstmt, "INSERT INTO \"" TABLE_NAME "\" VALUES (?)", SQL_NTS),
hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"INSERT INTO \"" TABLE_NAME "\" VALUES (?)",
SQL_NTS), hstmt);
   CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_DROP), hstmt);
 
   CHECK_SQL(ret = SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_ROLLBACK),

Modified: trunk/testsuites/t_unixodbc_sap/sap_async.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_async.c	2007-05-29 12:25:33 UTC (rev 117)
+++ trunk/testsuites/t_unixodbc_sap/sap_async.c	2007-05-29 12:26:21 UTC (rev 118)
@@ -98,61 +98,61 @@
 
       case (SQL_API_SQLTABLES):
         CHECK_SQL_EXE(ret = SQLTables(hstmt, test_values->sz_qualifier, SQL_NTS, 
-                                    "", SQL_NTS, test_values->sz_table_name, SQL_NTS, 
+                                    (SQLCHAR*)"", SQL_NTS, test_values->sz_table_name,
SQL_NTS, 
                                     test_values->sz_p1, SQL_NTS),
                     hstmt);
         break;
 
       case (SQL_API_SQLCOLUMNS):
         CHECK_SQL_EXE(ret = SQLColumns(hstmt, test_values->sz_qualifier, SQL_NTS,
-                                    "", SQL_NTS, test_values->sz_table_name, SQL_NTS,
+                                    (SQLCHAR*)"", SQL_NTS, test_values->sz_table_name,
SQL_NTS,
                                     test_values->sz_column_name, SQL_NTS),
                     hstmt);
         break;
 
       case (SQL_API_SQLSTATISTICS):
         CHECK_SQL_EXE(ret = SQLStatistics(hstmt, test_values->sz_qualifier, SQL_NTS,
-                                        "", SQL_NTS, test_values->sz_table_name,
SQL_NTS,
+                                        (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
                                         (WORD)test_values->cb_p1,
(WORD)test_values->cb_p2),
                     hstmt);
         break;
 
       case (SQL_API_SQLTABLEPRIVILEGES):
         CHECK_SQL_EXE(ret = SQLTablePrivileges(hstmt, test_values->sz_qualifier,
SQL_NTS,
-                                              "", SQL_NTS, test_values->sz_table_name,
SQL_NTS),
+                                              (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS),
                       hstmt);
         break;
 
       case (SQL_API_SQLCOLUMNPRIVILEGES):
         CHECK_SQL_EXE(ret = SQLColumnPrivileges(hstmt, test_values->sz_qualifier,
SQL_NTS,
-                                                "", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
+                                                (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
                                                 test_values->sz_column_name, SQL_NTS),
                       hstmt);
         break;
 
       case (SQL_API_SQLPRIMARYKEYS):
         CHECK_SQL_EXE(ret = SQLPrimaryKeys(hstmt, test_values->sz_qualifier, SQL_NTS,
-                                          "", SQL_NTS, test_values->sz_table_name,
SQL_NTS),
+                                            (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS),
                       hstmt);
         break;
 
       case (SQL_API_SQLFOREIGNKEYS):
         CHECK_SQL_EXE(ret = SQLForeignKeys(hstmt, test_values->sz_qualifier, SQL_NTS,
-                                          "", SQL_NTS, test_values->sz_table_name,
SQL_NTS,
+                                          (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
                                           test_values->sz_column_name, SQL_NTS,
-                                          "", SQL_NTS, test_values->sz_p2, SQL_NTS),
+                                          (SQLCHAR*)"", SQL_NTS, test_values->sz_p2,
SQL_NTS),
                       hstmt);
         break;
 
       case (SQL_API_SQLPROCEDURES):
         CHECK_SQL_EXE(ret = SQLProcedures(hstmt, test_values->sz_qualifier, SQL_NTS,
-                                          "", SQL_NTS, test_values->sz_table_name,
SQL_NTS),
+                                          (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS),
                       hstmt);
         break;
 
       case (SQL_API_SQLPROCEDURECOLUMNS):
         CHECK_SQL_EXE(ret = SQLProcedureColumns(hstmt, test_values->sz_qualifier,
SQL_NTS,
-                                                "", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
+                                                (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
                                                 test_values->sz_column_name, SQL_NTS),
                       hstmt);
         break;
@@ -160,7 +160,7 @@
       }
     } while (ret == SQL_STILL_EXECUTING);
   }
-  SQLExecDirect (hstmt, "DROP TABLE IF EXISTS " TABLE_NAME, SQL_NTS);
-  SQLExecDirect (hstmt, "DROP TABLE IF EXISTS " TABLE_NAME "X", SQL_NTS);
+  SQLExecDirect (hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS " TABLE_NAME, SQL_NTS);
+  SQLExecDirect (hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS " TABLE_NAME "X", SQL_NTS);
 
 }

Modified: trunk/testsuites/t_unixodbc_sap/sap_bindparm.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_bindparm.c	2007-05-29 12:25:33 UTC (rev 117)
+++ trunk/testsuites/t_unixodbc_sap/sap_bindparm.c	2007-05-29 12:26:21 UTC (rev 118)
@@ -27,8 +27,8 @@
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
 
-  CHECK_SQL_S(SQLExecDirect(hstmt, "DROP TABLE IF EXISTS \"" TABLE_NAME "\"", SQL_NTS),
hstmt);
-  CHECK_SQL_S(SQLExecDirect(hstmt,  "CREATE TABLE " TABLE_NAME "("
+  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 "("
                                       "\"MY_ROW_ID\" INT, "
                                       "\"TYP_CHAR\" CHAR(30), \"TYP_SMALLINT\" SMALLINT,
"
                                       "\"TYP_INTEGER\" INTEGER, \"TYP_FLOAT\" FLOAT, "
@@ -37,7 +37,7 @@
               hstmt);
 
   /* insert some data */
-  CHECK_SQL_S(SQLPrepare(hstmt, "INSERT INTO " TABLE_NAME " "
+  CHECK_SQL_S(SQLPrepare(hstmt, (SQLCHAR*)"INSERT INTO " TABLE_NAME " "
                                   "(\"MY_ROW_ID\", "
                                   "\"TYP_CHAR\", \"TYP_SMALLINT\", "
                                   "\"TYP_INTEGER\", \"TYP_FLOAT\", "
@@ -86,7 +86,7 @@
   }
 
   /* fetch the rows and compare */
-  CHECK_SQL_S(SQLExecDirect(hstmt, "SELECT"
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"SELECT"
                                         "\"MY_ROW_ID\", \"TYP_CHAR\", \"TYP_SMALLINT\", "
                                         "\"TYP_INTEGER\", \"TYP_FLOAT\", "
                                         "\"TYP_DOUBLE\", \"TYP_DATE\", \"TYP_TIME\" "
@@ -126,7 +126,7 @@
     OT_ASSERT_INT(bindparm_value->my_row_id, bindparm_result.my_row_id);
 
     snprintf(msg, sizeof(msg) - 1, "Expecting '%s', got '%s'", bindparm_value->vchar,
bindparm_result.vchar);
-    OT_ASSERT_MSG(msg, (0 == strncmp(bindparm_value->vchar, bindparm_result.vchar,
BINDPARM_MAX_NAME_LEN)));
+    OT_ASSERT_MSG(msg, (0 == strncmp((char*)bindparm_value->vchar,
(char*)bindparm_result.vchar, BINDPARM_MAX_NAME_LEN)));
 
     OT_ASSERT_INT(bindparm_value->vsmallint, bindparm_result.vsmallint);
     OT_ASSERT_INT(bindparm_value->vinteger, bindparm_result.vinteger);

Modified: trunk/testsuites/t_unixodbc_sap/sap_cnvchar.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_cnvchar.c	2007-05-29 12:25:33 UTC (rev 117)
+++ trunk/testsuites/t_unixodbc_sap/sap_cnvchar.c	2007-05-29 12:26:21 UTC (rev 118)
@@ -3,12 +3,23 @@
 #define TABLE_NAME "cnvchar"
 #define TABLE_ENGINE "InnoDB"
 
+/* 
+  TODO: 
+  Original code has values for the following types but does not test them
+  because they are not in the list below. Odd, anchient tests...
+  SQL_C_[U|S]*TINYINT  
+  Added already:
+  SQL_C_[U|S]SHORT
+  SQL_C_[U|S]LONG
+*/
 CNVCHAR_TYPES type_char_list[] = {
   {SQL_C_CHAR,          SQL_C_CHAR,         SQL_CHAR},
-  /* TODO: SQL_C_SSHORT / SQL_C_USHORT -> SQL_SMALLINT */
   {SQL_C_SHORT,         SQL_C_SHORT,        SQL_SMALLINT},
-  /* TODO: SQL_C_SLONG / SQL_C_ULONG -> SQL_INTEGER */
+  {SQL_C_USHORT,        SQL_C_USHORT,       SQL_SMALLINT},
+  {SQL_C_SSHORT,        SQL_C_SSHORT,       SQL_SMALLINT},
   {SQL_C_LONG,          SQL_C_LONG,         SQL_INTEGER},
+  {SQL_C_ULONG,         SQL_C_ULONG,        SQL_INTEGER},
+  {SQL_C_SLONG,         SQL_C_SLONG,        SQL_INTEGER},
   {SQL_C_FLOAT,         SQL_C_FLOAT,        SQL_REAL},
   /* TODO: SQL_FLOAT is missing */
   {SQL_C_DOUBLE,        SQL_C_DOUBLE,       SQL_DOUBLE},
@@ -18,40 +29,106 @@
   {SQL_C_TYPE_TIME,     SQL_C_TYPE_TIME,    SQL_TYPE_TIME},
   /* TODO: SQL_TYPE_TIMESTAMP, SQL_C_TYPE_TIMESTAMP */
   {SQL_C_TYPE_TIMESTAMP,SQL_C_TIMESTAMP,    SQL_TYPE_TIMESTAMP},
-  {0,                       0,              0}
+  {-9999,               -9999,              -9999}
 };
 
 CNVCHAR_TABLES table_list[] = {
   {
   SQL_CHAR,        "SQL_CHAR",
-  "CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col CHAR(100)) ENGINE = \""
TABLE_ENGINE "\"",
+  (SQLCHAR*)"CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col CHAR(100)) ENGINE = \""
TABLE_ENGINE "\"",
   type_char_list
   },
 
   {
   SQL_VARCHAR,     "SQL_VARCHAR",
-  "CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col CHAR(100)) ENGINE = \""
TABLE_ENGINE "\"",
+  (SQLCHAR*)"CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col CHAR(100)) ENGINE = \""
TABLE_ENGINE "\"",
   type_char_list
   },
 
   {
   SQL_LONGVARCHAR, "SQL_LONGVARCHAR",
-  "CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col LONG) ENGINE = \"" TABLE_ENGINE
"\"",
+  (SQLCHAR*)"CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col LONG) ENGINE = \""
TABLE_ENGINE "\"",
   type_char_list
   },
 
-  {0, "", "", NULL}
+  {0, "", (SQLCHAR*)"", NULL}
 };
 
 SQLCHAR           result_buffer[1024];
 
-UCHAR szDefCHAR[] = "SQL_C_CHAR";
-UCHAR szDefNUM[] =  "12345";
 
+
+UCHAR szDefBINNUM[50] = "9999"; SQLLEN cbBINNUM = sizeof(szDefBINNUM);
+
+
+/* SQL_C_CHAR */
+SQLCHAR   def_char[]      = "SQL_C_CHAR";
+SQLCHAR   def_num[]       = "12345";
+/* SQL_C_BIT */
+SQLCHAR   def_bit[]       = "0";
+SQLCHAR   s_def_bit       = '1';
+/* SQL_C_TINYINT, added SQL_C_STINYINT/SQLC_UTINYINT */
+SQLCHAR   s_def_tiny      = SQL_C_TINYINT;
+SQLCHAR   def_utiny[]     = "12";               /* original code but for SQL_C_TINYINT */
+SQLCHAR   s_def_utiny     = SQL_C_UTINYINT;     /* n/a in the original code */
+SQLSCHAR  def_stiny[]     = "-12";              /* n/a in the original code */
+SQLSCHAR  s_def_stiny     = SQL_C_STINYINT;     /* ??? original code: SCHAR sDefTINY =
SQL_C_TINYINT */
+/* SQL_C_SHORT, added SQL_C_SSHORT/SQL_C_USHORT */
+SWORD     s_def_short     = SQL_C_SHORT;
+SQLSCHAR  def_sshort[]    = "-3333";            /* n/a in the original code */
+SWORD     s_def_sshort    = SQL_C_SSHORT;       /* SWORD sDefSHORT = SQL_C_SHORT; */
+SQLCHAR   def_ushort[]    = "3333";             /* UCHAR szDefSHORT[] = "3333" */
+SWORD     s_def_ushort    = SQL_C_USHORT;       /* n/a in the original code */
+/* SQL_C_LONG, added SQL_C_SLONG/SQL_C_ULONG */
+SWORD     s_def_long      = SQL_C_LONG;
+SQLSCHAR  def_slong[]     = "-44444";           /* n/a in the original code */
+SWORD     s_def_slong     = SQL_C_SLONG;        /* n/a in the original code */
+SQLCHAR   def_ulong[]     = "44444";            /* UCHAR szDefLONG[] = "44444" */
+SWORD     s_def_ulong     = SQL_C_ULONG;        /* n/a in the original code */
+/* SQL_C_FLOAT */
+SFLOAT    s_def_float     = SQL_C_FLOAT;
+SQLCHAR   def_float[]     = "5.5555";
+/* SQL_C_DOUBLE */
+SDOUBLE   s_def_double    = 2222.222;
+SQLCHAR   def_double[]    = "6.66666";
+/* SQL_C_BINARY */
+SQLCHAR def_binary[50]    = "SQL_C_BINARY";
+/* SQL_C_DATE */
+DATE_STRUCT s_def_date[]  = {{1994, 9, 28}};
+SQLCHAR     def_date[]    = "1994-09-28";
+/* SQL_C_TIME */
+TIME_STRUCT s_def_time[]  = {{9, 35, 58}};
+SQLCHAR     def_time[]    = "09:35:58";
+/* SQL_C_TIMESTAMP */
+TIMESTAMP_STRUCT  s_def_stamp[] = {{1994, 9, 28, 9, 35, 58, 30}};
+SQLCHAR           def_stamp[] = "1994-09-28 09:35:58";
+
 CNVCHAR_DEFAULTS_STRUCT cnvchar_default_list[] = {
-  { "SQL_C_CHAR",      SQL_C_CHAR,      szDefCHAR,   szDefNUM,      0,      
sizeof(result_buffer),  sizeof(result_buffer)  },
-  /* { "SQL_C_BIT",       SQL_C_BIT,	"0",            "1"         0,          sizeof("0"),
           sizeof('1') }, */
-  { NULL,              0,               NULL,           NULL,       0,          0,       
              0 }
+  { "SQL_C_CHAR",       SQL_C_CHAR,       def_char,   def_num,        0,                 
  sizeof(result_buffer),sizeof(result_buffer)  },
+  { "SQL_C_BIT",        SQL_C_BIT,        def_bit,    &s_def_bit,     0,             
      sizeof(def_bit),      sizeof(s_def_bit) },
+  /* not referenced above = never used AFAIK */
+  { "SQL_C_TINYINT",    SQL_C_TINYINT,    def_utiny,  &s_def_tiny,    0,             
      sizeof(def_utiny),    sizeof(s_def_tiny) },
+  { "SQL_C_UTINYINT",   SQL_C_UTINYINT,   def_utiny,  &s_def_utiny,   0,             
      sizeof(def_utiny),    sizeof(s_def_utiny) },
+  { "SQL_C_STINYINT",   SQL_C_STINYINT,   def_stiny,  &s_def_stiny,   0,             
      sizeof(def_stiny),    sizeof(s_def_stiny) },
+  /* SQL_C_SHORT, added U/S */
+  { "SQL_C_SHORT",      SQL_C_SHORT,      def_ushort, &s_def_short,   0,             
      sizeof(def_ushort),   sizeof(s_def_short) },
+  { "SQL_C_USHORT",     SQL_C_USHORT,     def_ushort, &s_def_ushort,  0,             
      sizeof(def_ushort),   sizeof(s_def_ushort) },
+  { "SQL_C_SSHORT",     SQL_C_SSHORT,     def_sshort, &s_def_sshort,  0,             
      sizeof(def_sshort),   sizeof(s_def_sshort) },
+  /* SQL_C_LONG, added U/S */
+  { "SQL_C_LONG",       SQL_C_LONG,       def_ulong,  &s_def_long,    0,             
      sizeof(def_ulong),    sizeof(s_def_long) },
+  { "SQL_C_ULONG",      SQL_C_ULONG,      def_ulong,  &s_def_ulong,   0,             
      sizeof(def_ulong),    sizeof(s_def_ulong) },
+  { "SQL_C_SLONG",      SQL_C_SLONG,      def_slong,  &s_def_slong,   0,             
      sizeof(def_slong),    sizeof(s_def_slong) },
+  /* Other */
+  { "SQL_C_FLOAT",      SQL_REAL,         def_float,  &s_def_float,   0,             
      sizeof(def_float),    sizeof(s_def_float) },
+  { "SQL_C_DOUBLE",     SQL_FLOAT,        def_double, &s_def_double,  0,             
      sizeof(def_double),   sizeof(s_def_double) },
+  { "SQL_C_DOUBLE",     SQL_DOUBLE,       def_double, &s_def_double,  0,             
      sizeof(def_double),   sizeof(s_def_double) },
+  { "SQL_C_BINARY",     SQL_C_DOUBLE,     def_binary, def_binary,     sizeof(def_binary),
  sizeof(def_binary),   sizeof(def_binary) },
+  { "SQL_C_DATE",       SQL_C_DATE,       def_date,   s_def_date,     0,                 
  sizeof(def_date),     sizeof(s_def_date) },
+  { "SQL_C_TIME",       SQL_C_TIME,       def_time,   s_def_time,     0,                 
  sizeof(def_date),     sizeof(s_def_time) },
+  { "SQL_C_TIMESTAMP",  SQL_C_TIMESTAMP,  def_stamp,  s_def_stamp,    0,                 
  sizeof(def_stamp),    sizeof(s_def_stamp) },
+  { "SQL_C_VARCHAR",    SQL_VARCHAR,      def_char,   def_char,       0,                 
  sizeof(result_buffer),sizeof(result_buffer)  },
+  { "SQL_C_LONGVAR",    SQL_LONGVARCHAR,  def_char,   def_char,       0,                 
  sizeof(result_buffer),sizeof(result_buffer)  },
+  { NULL,               0,                NULL,       NULL,           0,                 
  0,                      0 } 
 };
 
 /*
@@ -70,23 +147,26 @@
   SQLINTEGER        cb_data_size;
   CNVCHAR_TABLES    *test_table;
   CNVCHAR_TYPES     *test_type;
-
+  /*
+  char              c_type_name_in[100];
+  char              c_type_name_out[100];
+  */
   OT_TODO("This is a stub - unixODBC/tests/v3/conformance/Other/cnvchar");
+  OT_SKIP("To prevent crashes we skip it...");
 
-  for (test_table = table_list; test_table->sql_type > 0; test_table++)
+  for (test_table = table_list; test_table->types != NULL; test_table++)
   {
     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, "DROP TABLE IF EXISTS " TABLE_NAME, SQL_NTS),
hstmt);
+    CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS " TABLE_NAME,
SQL_NTS), hstmt);
     CHECK_SQL_S(SQLExecDirect(hstmt, test_table->create_statement, SQL_NTS), hstmt);
     CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
 
-    for (test_type = table_list->types; test_type->c_type_in > 0; test_type++)
+    for (test_type = table_list->types; test_type->c_type_in != -9999 &&
test_type->sql_type != -9999; test_type++)
     {
-
-      CHECK_SQL_S(SQLPrepare(hstmt, "INSERT INTO " TABLE_NAME 
+      CHECK_SQL_S(SQLPrepare(hstmt, (SQLCHAR*)"INSERT INTO " TABLE_NAME 
                                     " (my_row_id, col) VALUES (?, ?)", SQL_NTS),
                   hstmt);
 
@@ -105,7 +185,7 @@
       CHECK_SQL_S(SQLExecute(hstmt), hstmt);
       CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
 
-      CHECK_SQL_S(SQLExecDirect(hstmt, "SELECT col FROM " TABLE_NAME " WHERE my_row_id =
?", SQL_NTS), hstmt);
+      CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"SELECT col FROM " TABLE_NAME " WHERE
my_row_id = ?", SQL_NTS), hstmt);
       CHECK_SQL_S(SQLBindCol(hstmt, 1, test_type->c_type_out, result_buffer,
cb_data_size, &len_indicator), hstmt);
       CHECK_SQL_S(SQLFetch(hstmt), hstmt);
       CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
@@ -130,11 +210,11 @@
       case (SQL_C_BINARY):
         for (def2 = cnvchar_default_list; def2->name != NULL; def2++)
         {
-          if (def2->cb_type == sql_type) 
+          if (def2->cb_type == sql_type)
           {
             *out_bind_value_len   = def2->pcb_value;
             *out_bind_value        = (SQLPOINTER)(def2->num);
-            *out_cb_data_size     = def2->cb_data_size_n;
+            *out_cb_data_size     = def2->cb_data_size_num;
             if (out_bind_value_len != NULL)
               *out_bind_value_len = *out_cb_data_size;
             return 1;
@@ -149,7 +229,7 @@
           {
             *out_bind_value_len   = def2->pcb_value;
             *out_bind_value       = (SQLPOINTER)(def2->value);
-            *out_cb_data_size     = def2->cb_data_size;
+            *out_cb_data_size     = def2->cb_data_size_value;
             if (out_bind_value_len != NULL)
               *out_bind_value_len = *out_cb_data_size;
             return 1;
@@ -160,12 +240,13 @@
       default:
         *out_bind_value_len   = defaults->pcb_value;
         *out_bind_value       = (SQLPOINTER)(defaults->num);
-        *out_cb_data_size     = defaults->cb_data_size_n;
+        *out_cb_data_size     = defaults->cb_data_size_num;
         return 1;
         break;
       }
     }
   }
 
-  return 0;
+  *out_bind_value = NULL;
+  return 1;
 }

Modified: trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c	2007-05-29 12:25:33 UTC (rev
117)
+++ trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c	2007-05-29 12:26:21 UTC (rev
118)
@@ -3,7 +3,256 @@
 */
 #include "t_unixodbc_sap_suite.h"
 
+int unixodbc_sap_ctype2string(SQLINTEGER c_type, char *string, unsigned int string_len) 
+{
+  int found = 1;
+
+  /* SQL_C_BOOKMARK and SQL_C_VARBOOKMARK are deprecated and not recognized */
+  switch (c_type) 
+  {
+  case (SQL_C_CHAR): 
+    strncpy(string, "SQL_C_CHAR", string_len); 
+    break;
+  case (SQL_C_SHORT): 
+    strncpy(string, "SQL_C_SHORT (2.0)", string_len); 
+    break;
+  case (SQL_C_SSHORT): 
+    strncpy(string, "SQL_C_SSHORT", string_len);
+    break;
+  case (SQL_C_USHORT):
+    strncpy(string, "SQL_C_USHORT", string_len);
+    break;
+  case (SQL_C_LONG):
+    strncpy(string, "SQL_C_LONG (2.0)", string_len);
+    break;
+  case (SQL_C_SLONG):
+    strncpy(string, "SQL_C_SLONG", string_len);
+    break;
+  case (SQL_C_ULONG):
+    strncpy(string, "SQL_C_ULONG", string_len); 
+    break;
+  case (SQL_C_FLOAT):
+    strncpy(string, "SQL_C_FLOAT", string_len);
+    break;
+  case (SQL_C_DOUBLE):
+    strncpy(string, "SQL_C_DOUBLE", string_len);
+    break;
+  case (SQL_C_BIT): 
+    strncpy(string, "SQL_C_BIT", string_len);
+    break;
+  case (SQL_C_TINYINT): 
+    strncpy(string, "SQL_C_TINYINT (2.0)", string_len);
+    break;
+  case (SQL_C_STINYINT):
+    strncpy(string, "SQL_C_STINYINT", string_len);
+    break;
+  case (SQL_C_UTINYINT):
+    strncpy(string, "SQL_C_UTINYINT", string_len);
+    break;
+  case (SQL_C_SBIGINT):
+    strncpy(string, "SQL_C_SBIGINT", string_len);
+    break;
+  case (SQL_C_UBIGINT):
+    strncpy(string, "SQL_C_UBIGINT", string_len);
+    break;
+  case (SQL_C_BINARY):
+    strncpy(string, "SQL_C_BINARY", string_len);
+    break;
 /*
+Seems not to be portable
+  case (SQL_C_XML):
+    strncpy(string, "SQL_C_XML", string_len);
+    break;
+*/
+  case (SQL_C_TYPE_DATE):
+    strncpy(string, "SQL_C_TYPE_DATE", string_len);
+    break;
+  case (SQL_C_TIME):
+    strncpy(string, "SQL_C_TIME (2.0)", string_len);
+    break;
+  case (SQL_C_TYPE_TIME):
+    strncpy(string, "SQL_C_TYPE_TIME", string_len);
+    break;
+  case (SQL_TIMESTAMP):
+    strncpy(string, "SQL_TIMESTAMP (2.0)", string_len);
+    break;
+  case (SQL_C_TYPE_TIMESTAMP):
+    strncpy(string, "SQL_C_TYPE_TIMESTAMP", string_len);
+    break;
+  case (SQL_C_NUMERIC):
+    strncpy(string, "SQL_C_NUMERIC", string_len);
+    break;
+/*
+  They seem not to be portable
+  case (SQL_C_GUID):
+    strncpy(string, "SQL_C_GUID", string_len);
+    break;
+  case (SQL_INTERVAL_STRUCT):
+    strncpy(string, "SQL_INTERVAL_STRUCT", string_len);
+    break;
+*/
+  default:
+    strncpy(string, "Unknown type", string_len);
+    found = 0;
+    break;
+  }
+
+  return found;
+}
+
+int unixodbc_sap_sqltype2string(SQLINTEGER sql_type, char *string, unsigned int
string_len) 
+{
+  int found = 1;
+  
+  switch (sql_type) 
+  {
+  case (SQL_CHAR):
+    strncpy(string, "CHAR(n)", string_len);
+    break;
+  case (SQL_VARCHAR):
+    strncpy(string, "VARCHAR(n)", string_len);
+    break;
+  case (SQL_LONGVARCHAR):
+    strncpy(string, "LONG VARCHAR", string_len);
+    break;
+  case (SQL_WCHAR):
+    strncpy(string, "WCHAR(n)", string_len);
+    break;
+  case (SQL_WVARCHAR):
+    strncpy(string, "VARWCHAR(n)", string_len);
+    break;
+  case (SQL_WLONGVARCHAR):
+    strncpy(string, "LONGWVARCHAR", string_len);
+    break;
+  case (SQL_DECIMAL):
+    strncpy(string, "DECIMAL(p,s)", string_len);
+    break;
+  case (SQL_NUMERIC):
+    strncpy(string, "NUMERIC(p,s)", string_len);
+    break;
+  case (SQL_SMALLINT):
+    strncpy(string, "SMALLINT", string_len);
+    break;
+  case  (SQL_INTEGER):
+    strncpy(string, "INTEGER", string_len);
+    break;
+  case (SQL_REAL):
+    strncpy(string, "REAL", string_len);
+    break;
+  case (SQL_FLOAT):
+    strncpy(string, "FLOAT(p)", string_len);
+    break;
+  case (SQL_DOUBLE):
+    strncpy(string, "DOUBLE PRECISION", string_len);
+    break;
+  case (SQL_BIT):
+    strncpy(string, "BIT", string_len);
+    break;
+  case (SQL_TINYINT):
+    strncpy(string, "TINYINT", string_len);
+    break;
+  case (SQL_BIGINT):
+    strncpy(string, "BIGINT", string_len);
+    break;
+  case (SQL_BINARY):
+    strncpy(string, "BINARY(n)", string_len);
+    break;
+  case (SQL_VARBINARY):
+    strncpy(string, "VARBINARY(n)", string_len);
+    break;
+  case (SQL_LONGVARBINARY):
+    strncpy(string, "LONG VARBINARY", string_len);
+    break;
+  case (SQL_TYPE_DATE):
+    strncpy(string, "DATE", string_len);
+    break;
+  case (SQL_TYPE_TIME):
+    strncpy(string, "TIME(p)", string_len);
+    break;
+  case (SQL_TYPE_TIMESTAMP):
+    strncpy(string, "TIMESTAMP(p)", string_len);
+    break;
+/*
+  They seem to be not portable 
+  case (SQL_TYPE_UTCDATETIME):
+    strncpy(string, "UTCDATETIME", string_len);
+    break;
+  case (SQL_TYPE_UTCTIME):
+    strncpy(string, "UTCTIME", string_len);
+    break;
+*/
+  case (SQL_INTERVAL_MONTH):
+    strncpy(string, "INTERVAL MONTH(p)", string_len);
+    break;
+  case (SQL_INTERVAL_YEAR):
+    strncpy(string, "INTERVAL YEAR(p)", string_len);
+    break;
+  case (SQL_INTERVAL_YEAR_TO_MONTH):
+    strncpy(string, "INTERVAL YEAR(p) TO MONTH", string_len);
+    break;
+  case (SQL_INTERVAL_DAY):
+    strncpy(string, "INTERVAL DAY(p)", string_len);
+    break;
+  case (SQL_INTERVAL_HOUR):
+    strncpy(string, "INTERVAL HOUR(p)", string_len);
+    break;
+  case (SQL_INTERVAL_MINUTE):
+    strncpy(string, "INTERVAL MINUTE(p)", string_len);
+    break;
+  case (SQL_INTERVAL_SECOND):
+    strncpy(string, "INTERVAL SECOND(p,q)", string_len);
+    break;
+  case (SQL_INTERVAL_DAY_TO_HOUR):
+    strncpy(string, "INTERVAL DAY(p) TO HOUR", string_len);
+    break;
+  case (SQL_INTERVAL_DAY_TO_MINUTE):
+    strncpy(string, "INTERVAL DAY(p) TO MINUTE", string_len);
+    break;
+  case (SQL_INTERVAL_DAY_TO_SECOND):
+    strncpy(string, "INTERVAL DAY(p) TO SECOND(p)", string_len);
+    break;
+  case (SQL_INTERVAL_HOUR_TO_MINUTE):
+    strncpy(string, "INTERVAL HOUR(p) TO MINUTE", string_len);
+    break;
+  case (SQL_INTERVAL_HOUR_TO_SECOND):
+    strncpy(string, "INTERVAL HOUR(p) TO SECOND(q)", string_len);
+    break;
+/*
+Seems not portable
+  case (SQL_INTERVAL_MINUTE_SECOND):
+    strncpy(string, "INTERVAL MINUTE(p) TO SECOND(q)", string_len);
+    break;
+*/
+  case (SQL_GUID):
+    strncpy(string, "GUID", string_len);
+    break;
+  default:
+    strncpy(string, "Unknown type", string_len);
+    found = 0;
+    break;
+  }
+
+  return found;
+}
+
+void unixodbc_sap_create_identifier(char *identifier, char *prefix, unsigned ident_len)
+{
+  unsigned int i = 0;
+
+  if (prefix)
+  {
+    strncpy(identifier, prefix, (size_t)ident_len);
+    ident_len -= strlen(prefix);
+    i = strlen(prefix);
+  }
+
+  for ( ; i < ident_len; i++)
+    identifier[i] = (SQLCHAR)('a' + ((i + 1) % 10));
+  identifier[ident_len] = '\0';
+
+}
+
+/*
   Global suite setup method
 
   SYNOPSIS
@@ -116,4 +365,6 @@
   OT_SUITE_ADD_TEST(sap_async, NULL, NULL);
   OT_SUITE_ADD_TEST(sap_bindparm, unixodbc_sap_setup, unixodbc_sap_teardown);
   OT_SUITE_ADD_TEST(sap_cnvchar, unixodbc_sap_setup, unixodbc_sap_teardown);
+  OT_SUITE_ADD_TEST(sap_col1, unixodbc_sap_setup, unixodbc_sap_teardown);
+  OT_SUITE_ADD_TEST(sap_cola, unixodbc_sap_setup, unixodbc_sap_teardown);
 OT_SUITE_REGISTER_END

Modified: trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h
===================================================================
--- trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h	2007-05-29 12:25:33 UTC (rev
117)
+++ trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h	2007-05-29 12:26:21 UTC (rev
118)
@@ -3,13 +3,20 @@
 #define OT_PARAM  CuTest *tc
 #define OT_ARGS   tc
 
+int unixodbc_sap_ctype2string(SQLINTEGER c_type, char *string, unsigned int string_len);
+int unixodbc_sap_sqltype2string(SQLINTEGER c_type, char *string, unsigned int
string_len);
+void unixodbc_sap_create_identifier(char *identifier, char *prefix, unsigned int
ident_len);
+
 /* Unit testing overhead ;-) */
 
 OT_SUITE_SETUP(unixodbc_sap_suite_setup);
 OT_TEST_SETUP(unixodbc_sap_setup);
 OT_TEST_TEARDOWN(unixodbc_sap_teardown);
 
+#define SAP_ASSERT_STRCMP(x, y) \
+  OT_ASSERT((0 == strcmp((char*)(x), (char*)(y))));
 
+
 /* 
   TODO: 
   Do not blame the author for choosing improper data types, blame the Others.
@@ -23,14 +30,14 @@
 
 /* sap_async.c */
 typedef struct st_test_values {
-   WORD cb_function;
-   UCHAR sz_qualifier[32];
-   UCHAR sz_table_name[32];
-   UCHAR sz_column_name[32];
-   UCHAR sz_p1[132];
-   SDWORD cb_p1;
-   UCHAR sz_p2[32];
-   SDWORD cb_p2;
+   SQLUSMALLINT cb_function;
+   SQLCHAR sz_qualifier[32];
+   SQLCHAR sz_table_name[32];
+   SQLCHAR sz_column_name[32];
+   SQLCHAR sz_p1[132];
+   SQLINTEGER cb_p1;
+   SQLCHAR sz_p2[32];
+   SQLINTEGER cb_p2;
 } TEST_VALUES;
 
 
@@ -76,19 +83,19 @@
 
 typedef struct st_cnvchar_tables {
   SQLINTEGER    sql_type;         /* SQL type for the string column of the table */
-  SQLCHAR       *test_name;
+  char          *test_name;
   SQLCHAR       *create_statement;
   CNVCHAR_TYPES *types;           /* list of types to test with this table */
 } CNVCHAR_TABLES;
 
 typedef struct st_cnvchar_defaults_struct {
-  SQLCHAR     *name;              /* has no particular meaning I'm aware of */
+  char        *name;              /* has no particular meaning I'm aware of */
   SQLINTEGER  cb_type;            /* not sure if it means C or SQL type */
   SQLPOINTER  value;             /* sVALUE, could be s = string value */
   SQLPOINTER  num;               /* sNUM, could be numerical value */
   SQLLEN      pcb_value;          /* original *pcbVALUE */
-  SQLINTEGER  cb_data_size;
-  SQLINTEGER  cb_data_size_n;
+  SQLINTEGER  cb_data_size_value;
+  SQLINTEGER  cb_data_size_num;
 } CNVCHAR_DEFAULTS_STRUCT;
 
 OT_TEST_METHOD(sap_cnvchar);
@@ -100,3 +107,9 @@
                             SQLLEN      *out_bind_value_len, 
                             SQLINTEGER  *out_cb_data_size
                           );
+
+/* sap_col1.c */
+OT_TEST_METHOD(sap_col1);
+
+/* sap_cola.c */
+OT_TEST_METHOD(sap_cola);

Thread
ODBC C-tests commit: r118 - trunk/testsuites/t_unixodbc_sapuwendel29 May