Date: Friday, January 13, 2006 @ 15:01:10
Author: zsolt
Path: /cvsroot/carob/libmysequoia/test
Modified: TestMySQLAPI.cpp (1.19 -> 1.20) TestMySQLAPI.hpp (1.8 -> 1.9)
Implemented TestMySQLAPI::mysql_stmt_select_fetch_test() and
TestMySQLAPI::mysql_stmt_store_fetch_test() to test the prepared statement
fetch and store futures.
------------------+
TestMySQLAPI.cpp | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++
TestMySQLAPI.hpp | 4 ++
2 files changed, 92 insertions(+)
Index: libmysequoia/test/TestMySQLAPI.cpp
diff -u libmysequoia/test/TestMySQLAPI.cpp:1.19
libmysequoia/test/TestMySQLAPI.cpp:1.20
--- libmysequoia/test/TestMySQLAPI.cpp:1.19 Wed Jan 11 12:55:33 2006
+++ libmysequoia/test/TestMySQLAPI.cpp Fri Jan 13 15:01:10 2006
@@ -363,3 +363,91 @@
CPPUNIT_ASSERT(mysql_stmt_close(stmt) == 0);
}
+
+void TestMySQLAPI::mysql_stmt_select_fetch_test(void)
+{
+ MYSQL_STMT *stmt;
+ MYSQL_BIND inbind[1];
+ MYSQL_BIND outbind[1];
+ int int_data;
+ char *query = "select * from t1 where a <= ?";
+
+ CPPUNIT_ASSERT(mysql_real_connect(mysql, HOST, USER1, PASSWD1, DB1, 0, 0, 0)
!= 0);
+ CPPUNIT_ASSERT((stmt = mysql_stmt_init(mysql)) != 0);
+ CPPUNIT_ASSERT(mysql_stmt_prepare(stmt, query, strlen(query)) == 0);
+ CPPUNIT_ASSERT(mysql_stmt_param_count(stmt) == 1);
+
+ memset(inbind, 0, sizeof(inbind));
+ inbind[0].buffer_type= MYSQL_TYPE_LONG;
+ inbind[0].buffer= (char *)&int_data;
+ inbind[0].is_null= 0;
+ inbind[0].length= 0;
+ CPPUNIT_ASSERT(mysql_stmt_bind_param(stmt, inbind) == 0);
+
+ int_data = 3;
+ CPPUNIT_ASSERT(mysql_stmt_execute(stmt) == 0);
+ CPPUNIT_ASSERT(mysql_stmt_field_count(stmt) == 2);
+
+ int int_res;
+ my_bool isnull;
+
+ memset(outbind, 0, sizeof(inbind));
+ outbind[0].buffer_type= MYSQL_TYPE_LONG;
+ outbind[0].buffer= (char *)&int_res;
+ outbind[0].is_null= &isnull;
+ CPPUNIT_ASSERT(mysql_stmt_bind_result(stmt, outbind) == 0);
+
+ int count = 1;
+ while (mysql_stmt_fetch(stmt) == 0)
+ CPPUNIT_ASSERT(count++ == int_res);
+
+ CPPUNIT_ASSERT(mysql_stmt_num_rows(stmt) == 3);
+ CPPUNIT_ASSERT(mysql_stmt_affected_rows(stmt) == 3);
+
+ CPPUNIT_ASSERT(mysql_stmt_close(stmt) == 0);
+}
+
+void TestMySQLAPI::mysql_stmt_store_fetch_test(void)
+{
+ MYSQL_STMT *stmt;
+ MYSQL_BIND inbind[1];
+ MYSQL_BIND outbind[1];
+ int int_data;
+ char *query = "select * from t1 where a <= ?";
+
+ CPPUNIT_ASSERT(mysql_real_connect(mysql, HOST, USER1, PASSWD1, DB1, 0, 0, 0)
!= 0);
+ CPPUNIT_ASSERT((stmt = mysql_stmt_init(mysql)) != 0);
+ CPPUNIT_ASSERT(mysql_stmt_prepare(stmt, query, strlen(query)) == 0);
+ CPPUNIT_ASSERT(mysql_stmt_param_count(stmt) == 1);
+
+ memset(inbind, 0, sizeof(inbind));
+ inbind[0].buffer_type= MYSQL_TYPE_LONG;
+ inbind[0].buffer= (char *)&int_data;
+ inbind[0].is_null= 0;
+ inbind[0].length= 0;
+ CPPUNIT_ASSERT(mysql_stmt_bind_param(stmt, inbind) == 0);
+
+ int_data = 3;
+ CPPUNIT_ASSERT(mysql_stmt_execute(stmt) == 0);
+ CPPUNIT_ASSERT(mysql_stmt_field_count(stmt) == 2);
+
+ int int_res;
+ my_bool isnull;
+
+ memset(outbind, 0, sizeof(inbind));
+ outbind[0].buffer_type= MYSQL_TYPE_LONG;
+ outbind[0].buffer= (char *)&int_res;
+ outbind[0].is_null= &isnull;
+ CPPUNIT_ASSERT(mysql_stmt_bind_result(stmt, outbind) == 0);
+ CPPUNIT_ASSERT(mysql_stmt_store_result(stmt) == 0);
+ CPPUNIT_ASSERT(mysql_stmt_num_rows(stmt) == 3);
+ CPPUNIT_ASSERT(mysql_stmt_affected_rows(stmt) == 3);
+
+ int count = 1;
+ while (mysql_stmt_fetch(stmt) == 0)
+ CPPUNIT_ASSERT(count++ == int_res);
+
+ CPPUNIT_ASSERT(mysql_stmt_free_result(stmt) == 0);
+
+ CPPUNIT_ASSERT(mysql_stmt_close(stmt) == 0);
+}
Index: libmysequoia/test/TestMySQLAPI.hpp
diff -u libmysequoia/test/TestMySQLAPI.hpp:1.8
libmysequoia/test/TestMySQLAPI.hpp:1.9
--- libmysequoia/test/TestMySQLAPI.hpp:1.8 Wed Jan 11 12:55:33 2006
+++ libmysequoia/test/TestMySQLAPI.hpp Fri Jan 13 15:01:10 2006
@@ -51,6 +51,8 @@
CPPUNIT_TEST (mysql_stmt_init_close_test);
CPPUNIT_TEST (mysql_stmt_attr_get_set_test);
CPPUNIT_TEST (mysql_stmt_prepare_bind_exec_test);
+ CPPUNIT_TEST (mysql_stmt_select_fetch_test);
+ CPPUNIT_TEST (mysql_stmt_store_fetch_test);
CPPUNIT_TEST_SUITE_END ();
public:
@@ -79,6 +81,8 @@
void mysql_stmt_init_close_test(void);
void mysql_stmt_attr_get_set_test(void);
void mysql_stmt_prepare_bind_exec_test(void);
+ void mysql_stmt_select_fetch_test(void);
+ void mysql_stmt_store_fetch_test(void);
private:
MYSQL *mysql;
};
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits