Add a few tests for conversions between binary and text.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 20 Jan 2015 11:18:20 +0000 (13:18 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 20 Jan 2015 19:57:02 +0000 (21:57 +0200)
Just noticed that it was not tested.

test/expected/param-conversions.out
test/expected/param-conversions_1.out
test/src/param-conversions-test.c

index 1071af75fe1a52fb19f577e96d4007fbbd6c6358..6bc9c4e1d277a6698a36c138e569d05ce2d2bee0 100644 (file)
@@ -125,4 +125,19 @@ Testing "SELECT 0-?" with SQL_C_SLONG -> SQL_SMALLINT param -1234...
 Result set:
 1234
 
+
+Testing bytea conversions
+Testing "SELECT ?" with SQL_C_BINARY -> SQL_BINARY param...
+Result set:
+666f6f0a5c62617200
+
+Testing "SELECT ?" with SQL_C_CHAR -> SQL_BINARY param "666f6f0001"...
+Result set:
+666f6f0001
+
+Testing "SELECT ?::text" with SQL_C_BINARY -> SQL_CHAR param...
+Result set:
+foo
+\bar
+
 disconnecting
index d89889c186dcdbdec8a51f2f5687459820ee18bc..3a501fee805b6accd6c04b367cc04f3e5f892cc8 100644 (file)
@@ -124,4 +124,19 @@ Testing "SELECT 0-?" with SQL_C_SLONG -> SQL_SMALLINT param -1234...
 Result set:
 1234
 
+
+Testing bytea conversions
+Testing "SELECT ?" with SQL_C_BINARY -> SQL_BINARY param...
+Result set:
+\x666F6F0A5C62617200
+
+Testing "SELECT ?" with SQL_C_CHAR -> SQL_BINARY param "666f6f0001"...
+Result set:
+\x666F6F0001
+
+Testing "SELECT ?::text" with SQL_C_BINARY -> SQL_CHAR param...
+Result set:
+foo
+\bar
+
 disconnecting
index 89faf679244c381e1de078ff43e44951bd3a8749..ddd5f42db4edfe7fab2e24266723589b3bb01114 100644 (file)
@@ -20,6 +20,7 @@ int main(int argc, char **argv)
 {
    SQLRETURN rc;
    SQLINTEGER intparam;
+   char    byteaparam[] = { 'f', 'o', 'o', '\n', '\\', 'b', 'a', 'r', '\0' };
 
    test_connect();
 
@@ -90,6 +91,11 @@ int main(int argc, char **argv)
    intparam = -1234;
    TEST_CONVERT("SELECT 0-?", SQL_C_SLONG, SQL_SMALLINT, &intparam);
 
+   printf("\nTesting bytea conversions\n");
+   TEST_CONVERT("SELECT ?", SQL_C_BINARY, SQL_BINARY, byteaparam);
+   TEST_CONVERT("SELECT ?", SQL_C_CHAR, SQL_BINARY, "666f6f0001");
+   TEST_CONVERT("SELECT ?::text", SQL_C_BINARY, SQL_CHAR, byteaparam);
+
    /* Clean up */
    test_disconnect();
 
@@ -129,7 +135,10 @@ test_convert(const char *sql,
            break;
    }
 
-   cbParam = SQL_NTS; /* ignored for non-character data */
+   if (c_type == SQL_BINARY)
+       cbParam = strlen(value) + 1;
+   else
+       cbParam = SQL_NTS; /* ignored for non-character data */
    rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT,
                          c_type,   /* value type */
                          sql_type, /* param type */