📄 mdbtool_test.cpp
字号:
#include "MDBTool_test.h"
#include "../ENV_test.h"
#include "MCRT/mdbtool.h"
#define TEST_SQLITE
#ifdef TEST_SQLITE
# define g_pDLLMDBTool "dbtool_sqlite"
# define g_pDBHost NULL
# define g_pPassword "password"
# define g_port 0
#elif defined( TEST_PGSQL )
# define g_pDLLMDBTool "dbtool_pgsql"
# define g_pDBHost "PGSQL_SVR"
# define g_pPassword "password"
# define g_port 5432
#elif defined( TEST_MYSQL )
# define g_pDLLMDBTool "dbtool_mysql"
# define g_pDBHost "MYSQL_SVR"
# define g_pPassword "password"
# define g_port 3306
#endif //end TEST_**SQL
// register the fixture into registry
CPPUNIT_TEST_SUITE_REGISTRATION( MDBToolTest );//register test class in cppunit
void MDBToolTest::setUp()
{
MDBTool dbtool;
dbtool.Init( g_pDLLMDBTool );
dbtool.Connect( g_pDBHost, "zf", g_pPassword, "test_db", g_port );
const char* pStmt = "CREATE TABLE test_table (id INT, username CHAR(30))";
dbtool.Exec( pStmt, strlen(pStmt), NULL );
dbtool.Fini();
}
void MDBToolTest::tearDown()
{
MDBTool dbtool;
dbtool.Init( g_pDLLMDBTool );
dbtool.Connect( g_pDBHost, "zf", g_pPassword, "test_db", g_port );
const char* pStmt = "DROP TABLE test_table";
dbtool.Exec( pStmt, strlen(pStmt), NULL );
dbtool.Fini();
}
void MDBToolTest::testInitNormal()
{
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
dbtool.Fini();
}
void MDBToolTest::testInitInvalid()
{
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( "dbtool_invalid" ) != E_SUCCESS );
}
void MDBToolTest::testNormalConnect()
{
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( g_pDBHost, "zf", g_pPassword, "test_db", g_port );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
dbtool.Fini();
}
void MDBToolTest::testInvalidConnect()
{
#ifndef TEST_SQLITE
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( "invalid addr", "zf", g_pPassword, "test_db", g_port );
CPPUNIT_ASSERT( retVal != E_SUCCESS );
dbtool.Fini();
#endif //end TEST_SQLITE
}
void MDBToolTest::testInvalidUserConnect()
{
#ifndef TEST_SQLITE
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( g_pDBHost, "invalid user", g_pPassword, "test_db", g_port );
CPPUNIT_ASSERT( retVal != E_SUCCESS );
dbtool.Fini();
#endif //end TEST_SQLITE
}
void MDBToolTest::testInvalidPasswdConnect()
{
#ifndef TEST_SQLITE
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( g_pDBHost, "zf", "invalid password", "test_db", g_port );
CPPUNIT_ASSERT( retVal != E_SUCCESS );
dbtool.Fini();
#endif //end TEST_SQLITE
}
void MDBToolTest::testInvalidDBConnect()
{
#ifndef TEST_SQLITE
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( g_pDBHost, "zf", g_pPassword, "invalid db", g_port );
CPPUNIT_ASSERT( retVal != E_SUCCESS );
dbtool.Fini();
#endif //end TEST_SQLITE
}
void MDBToolTest::testInvalidPortConnect()
{
#ifndef TEST_SQLITE
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
unsigned int portInvalid = 112233;
retVal = dbtool.Connect( g_pDBHost, "zf", g_pPassword, "test_db", portInvalid );
CPPUNIT_ASSERT( retVal != E_SUCCESS );
dbtool.Fini();
#endif //end TEST_SQLITE
}
void MDBToolTest::testNormalQuery()
{
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( g_pDBHost, "zf", g_pPassword, "test_db", g_port );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
// create table with two rows' data
{
const char* pStmt = "INSERT INTO test_table VALUES (1,\'ZhuFei\')";
int rowsAffected = 0;
retVal = dbtool.Exec( pStmt, strlen(pStmt), & rowsAffected );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
pStmt = "INSERT INTO test_table VALUES (2,\'zf\')";
retVal = dbtool.Exec( pStmt, strlen(pStmt), & rowsAffected );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
#ifndef TEST_SQLITE
CPPUNIT_ASSERT( rowsAffected == 2 );
#endif //end TEST_SQLITE
}
// query
{
const char* pStmt = "SELECT COUNT(*) FROM test_table";
MRecordSet recordSet;
retVal = dbtool.Query( pStmt, strlen(pStmt), & recordSet );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
CPPUNIT_ASSERT( recordSet.GetRows() == 1 );
CPPUNIT_ASSERT( recordSet.GetCols() == 1 );
CPPUNIT_ASSERT( atoi(recordSet.GetData(0,0,NULL)) == 2 );
pStmt = "SELECT * FROM test_table";
retVal = dbtool.Query( pStmt, strlen(pStmt), & recordSet );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
CPPUNIT_ASSERT( recordSet.GetRows() == 2 );
CPPUNIT_ASSERT( recordSet.GetCols() == 2 );
// TODO - support print data
/*
printf( "%s\t-\t%s\n", recordSet.GetFieldName(0), recordSet.GetFieldName(1) );
printf( "%d\t-\t%s\n", ::atoi(recordSet.GetData(0,0)), recordSet.GetData(0,1) );
printf( "%d\t-\t%s\n", ::atoi(recordSet.GetData(1,0)), recordSet.GetData(1,1) );
*/
}
dbtool.Fini();
}
void MDBToolTest::testNullQuery()
{
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( g_pDBHost, "zf", g_pPassword, "test_db", g_port );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
// query
{
const char* pStmt = "SELECT COUNT(*) FROM test_table";
MRecordSet recordSet;
retVal = dbtool.Query( pStmt, strlen(pStmt), & recordSet );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
CPPUNIT_ASSERT( recordSet.GetRows() == 1 );
CPPUNIT_ASSERT( recordSet.GetCols() == 1 );
CPPUNIT_ASSERT( atoi(recordSet.GetData(0,0,NULL)) == 0 );
pStmt = "SELECT * FROM test_table";
retVal = dbtool.Query( pStmt, strlen(pStmt), & recordSet );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
CPPUNIT_ASSERT( recordSet.GetRows() == 0 );
#ifndef TEST_SQLITE
CPPUNIT_ASSERT( recordSet.GetCols() == 2 );
#endif //end TEST_SQLITE
}
dbtool.Fini();
}
void MDBToolTest::testNormalExec()
{
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( g_pDBHost, "zf", g_pPassword, "test_db", g_port );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
// create table with two rows' data
{
const char* pStmt = "INSERT INTO test_table VALUES (1,\'ZhuFei\')";
int rowsAffected = 0;
retVal = dbtool.Exec( pStmt, strlen(pStmt), & rowsAffected );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
pStmt = "INSERT INTO test_table VALUES (2,\'zf\')";
retVal = dbtool.Exec( pStmt, strlen(pStmt), & rowsAffected );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
#ifndef TEST_SQLITE
CPPUNIT_ASSERT( rowsAffected == 1 );
#endif //end TEST_SQLITE
}
// Exec
{
const char* pStmt = "INSERT INTO test_table VALUES (3,\'AAA\')";
int rowsAffected = 0;
retVal = dbtool.Exec( pStmt, strlen(pStmt), & rowsAffected );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
pStmt = "INSERT INTO test_table VALUES (4,\'BBB\')";
retVal = dbtool.Exec( pStmt, strlen(pStmt), & rowsAffected );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
#ifndef TEST_SQLITE
CPPUNIT_ASSERT( rowsAffected == 1 );
#endif //end TEST_SQLITE
}
{
const char* pStmt = "DELETE FROM test_table WHERE id=3 OR id=4";
int rowsAffected = 0;
retVal = dbtool.Exec( pStmt, strlen(pStmt), & rowsAffected );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
#ifndef TEST_SQLITE
CPPUNIT_ASSERT( rowsAffected == 2 );
#endif //end TEST_SQLITE
}
dbtool.Fini();
}
void MDBToolTest::testInvalidExec()
{
MDBTool dbtool;
CPPUNIT_ASSERT( dbtool.Init( g_pDLLMDBTool ) == E_SUCCESS );
int retVal = E_SUCCESS;
retVal = dbtool.Connect( g_pDBHost, "zf", g_pPassword, "test_db", g_port );
CPPUNIT_ASSERT( retVal == E_SUCCESS );
// Exec
{
// sqlite3 doesn't support INSERT INTO table VALUES (VALUES1),(VALUES), just one by one
const char* pStmt = "INSERT INTO non_exist_table VALUES (3, \'AAA\'),(4,\'BBB\')";
retVal = dbtool.Exec( pStmt, strlen(pStmt), NULL );
CPPUNIT_ASSERT( retVal != E_SUCCESS );
}
dbtool.Fini();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -