Date: Friday, January 20, 2006 @ 10:33:21
Author: zsolt
Path: /cvsroot/carob/libmysequoia
Modified: src/Utils.cpp (1.27 -> 1.28) test/TestMySQLAPI.cpp (1.27 ->
1.28)
-implemented string, float and double testing
-corrected conversion of type float
-----------------------+
src/Utils.cpp | 2 -
test/TestMySQLAPI.cpp | 65 ++++++++++++++++++++++++++++++++++++++----------
2 files changed, 53 insertions(+), 14 deletions(-)
Index: libmysequoia/src/Utils.cpp
diff -u libmysequoia/src/Utils.cpp:1.27 libmysequoia/src/Utils.cpp:1.28
--- libmysequoia/src/Utils.cpp:1.27 Thu Jan 19 17:01:54 2006
+++ libmysequoia/src/Utils.cpp Fri Jan 20 10:33:21 2006
@@ -192,9 +192,9 @@
return MYSQL_TYPE_LONGLONG;
break;
case SQLT_FLOAT:
+ case SQLT_REAL:
return MYSQL_TYPE_FLOAT;
break;
- case SQLT_REAL:
case SQLT_DOUBLE:
return MYSQL_TYPE_DOUBLE;
break;
Index: libmysequoia/test/TestMySQLAPI.cpp
diff -u libmysequoia/test/TestMySQLAPI.cpp:1.27
libmysequoia/test/TestMySQLAPI.cpp:1.28
--- libmysequoia/test/TestMySQLAPI.cpp:1.27 Thu Jan 19 10:51:44 2006
+++ libmysequoia/test/TestMySQLAPI.cpp Fri Jan 20 10:33:21 2006
@@ -26,6 +26,7 @@
#include <cstdlib>
#include <cstring>
+#include <cmath>
CPPUNIT_TEST_SUITE_REGISTRATION (TestMySQLAPI);
@@ -199,7 +200,7 @@
{
char *query = "create table t1 (a int(11) not null auto_increment, b int(11)
default null,"
" c varchar(200) default null, d date default null, e time
default null,"
- " f datetime default null, primary key (a))";
+ " f datetime default null, g float default null, h double
default null, primary key (a))";
// connect to the database
CPPUNIT_ASSERT(mysql_real_connect(mysql, HOST, USER1, PASSWD1, DB1, 0, 0, 0)
!= 0);
@@ -210,8 +211,8 @@
void TestMySQLAPI::mysql_real_query_2_test(void)
{
- char *query = "insert into t1 (b,d,e) values (1,'2006-01-01', '1:2:3'),"
- "(2,'2006-01-02','4:5:6'),(3,'2006-01-03','7:8:9')";
+ char *query = "insert into t1 (b,c,d,e,g,h) values (1,'a1','2006-01-01',
'1:2:3', 1.1, 1.1),"
+ "(2,'a2','2006-01-02','4:5:6', 2.2,
2.2),(3,'a3','2006-01-03','7:8:9', 3.3, 3.3)";
// connect to the database
CPPUNIT_ASSERT(mysql_real_connect(mysql, HOST, USER1, PASSWD1, DB1, 0, 0, 0)
!= 0);
@@ -340,15 +341,17 @@
void TestMySQLAPI::mysql_stmt_prepare_bind_exec_test(void)
{
MYSQL_STMT *stmt;
- MYSQL_BIND bind[3];
+ MYSQL_BIND bind[5];
int int_data;
MYSQL_TIME date_data, time_data;
- char *query = "insert into t1 (b,d,e) values (?,?,?)";
+ float float_data;
+ double double_data;
+ char *query = "insert into t1 (b,d,e,g,h) values (?,?,?,?,?)";
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) == 3);
+ CPPUNIT_ASSERT(mysql_stmt_param_count(stmt) == 5);
memset(bind, 0, sizeof(bind));
bind[0].buffer_type = MYSQL_TYPE_LONG;
@@ -362,6 +365,12 @@
bind[2].buffer = (char *)&time_data;
bind[2].buffer_length = sizeof(MYSQL_TIME);
+ bind[3].buffer_type = MYSQL_TYPE_FLOAT;
+ bind[3].buffer = (char *)&float_data;
+
+ bind[4].buffer_type = MYSQL_TYPE_DOUBLE;
+ bind[4].buffer = (char *)&double_data;
+
CPPUNIT_ASSERT(mysql_stmt_bind_param(stmt, bind) == 0);
int_data = 4;
@@ -375,6 +384,8 @@
time_data.hour = 10;
time_data.minute = 11;
time_data.second = 12;
+ float_data = 4.4;
+ double_data = 4.4;
CPPUNIT_ASSERT(mysql_stmt_execute(stmt) == 0);
CPPUNIT_ASSERT(mysql_stmt_affected_rows(stmt) == 1);
@@ -390,6 +401,8 @@
time_data.hour = 13;
time_data.minute = 14;
time_data.second = 15;
+ float_data = 5.5;
+ double_data = 5.5;
CPPUNIT_ASSERT(mysql_stmt_execute(stmt) == 0);
CPPUNIT_ASSERT(mysql_stmt_affected_rows(stmt) == 1);
@@ -400,9 +413,9 @@
{
MYSQL_STMT *stmt;
MYSQL_BIND inbind[1];
- MYSQL_BIND outbind[2];
+ MYSQL_BIND outbind[8];
int int_data;
- char *query = "select a,d from t1 where a <= ?";
+ char *query = "select a,b,c,d,e,f,g,h 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);
@@ -418,26 +431,52 @@
int_data = 3;
CPPUNIT_ASSERT(mysql_stmt_execute(stmt) == 0);
- CPPUNIT_ASSERT(mysql_stmt_field_count(stmt) == 2);
+ CPPUNIT_ASSERT(mysql_stmt_field_count(stmt) == 8);
- int int_res;
- MYSQL_TIME date;
+ int int_res, int_res2;
+ char buffer[10];
+ long unsigned int buffer_len;
+ MYSQL_TIME date, time, datetime;
my_bool isnull;
+ float float_data;
+ double double_data;
memset(outbind, 0, sizeof(outbind));
outbind[0].buffer_type= MYSQL_TYPE_LONG;
outbind[0].buffer= (char *)&int_res;
outbind[0].is_null= &isnull;
- outbind[1].buffer_type= MYSQL_TYPE_DATE;
- outbind[1].buffer= (char *)&date;
+ outbind[1].buffer_type= MYSQL_TYPE_LONG;
+ outbind[1].buffer= (char *)&int_res2;
+ outbind[2].buffer_type= MYSQL_TYPE_STRING;
+ outbind[2].buffer= buffer;
+ outbind[2].buffer_length = sizeof(buffer);
+ outbind[2].length = &buffer_len;
+ outbind[3].buffer_type= MYSQL_TYPE_DATE;
+ outbind[3].buffer= (char *)&date;
+ outbind[4].buffer_type= MYSQL_TYPE_TIME;
+ outbind[4].buffer= (char *)&time;
+ outbind[5].buffer_type= MYSQL_TYPE_DATETIME;
+ outbind[5].buffer= (char *)&datetime;
+ outbind[6].buffer_type= MYSQL_TYPE_FLOAT;
+ outbind[6].buffer= (char *)&float_data;
+ outbind[7].buffer_type= MYSQL_TYPE_DOUBLE;
+ outbind[7].buffer= (char *)&double_data;
CPPUNIT_ASSERT(mysql_stmt_bind_result(stmt, outbind) == 0);
unsigned int count = 1;
while (mysql_stmt_fetch(stmt) == 0)
{
+ CPPUNIT_ASSERT(count == (unsigned int)int_res2);
+ CPPUNIT_ASSERT(buffer_len == 2);
+ CPPUNIT_ASSERT((buffer[0] == 'a') && (buffer[1] == '0'+(char)count));
+ CPPUNIT_ASSERT(time.hour == (count-1)*3+1);
+ CPPUNIT_ASSERT(time.minute == (count-1)*3+2);
+ CPPUNIT_ASSERT(time.second == (count-1)*3+3);
CPPUNIT_ASSERT(date.year == 2006);
CPPUNIT_ASSERT(date.month == 1);
CPPUNIT_ASSERT(date.day == count);
+ CPPUNIT_ASSERT(fabsf(float_data - count * 1.1) < 0.000001);
+ CPPUNIT_ASSERT(fabs(double_data - count * 1.1) < 0.000000000000001);
CPPUNIT_ASSERT(count++ == (unsigned int)int_res);
}
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits