List:Commits« Previous MessageNext Message »
From:pharvey Date:May 13 2006 10:57pm
Subject:Connector/ODBC 5 commit: r231 - in MYSQLPlus: MYSQLPlusLib MYSQLPlusTest
View as plain text  
Modified:
   MYSQLPlus/MYSQLPlusLib/MStatement.cpp
   MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp
Log:


Modified: MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-05-13 18:22:29 UTC (rev 230)
+++ MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-05-13 20:57:13 UTC (rev 231)
@@ -39,8 +39,6 @@
 {
     MYODBCDbgEnter();
 
-    Q_ASSERT( getState() > STATE_S1 );
-
     /* a result may try to modify our descriptors on its way out so delete it before
descriptors */
     if ( pResult )
         delete pResult;

Modified: MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp	2006-05-13 18:22:29 UTC (rev 230)
+++ MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp	2006-05-13 20:57:13 UTC (rev 231)
@@ -8,19 +8,29 @@
 class MYSQLPlusTest : public QObject
 {
     Q_OBJECT
-public:
+    public:
     MYSQLPlusTest();
     ~MYSQLPlusTest();
-    QFile fileDebugOut;
 
+private:
+    QFile           fileDebugOut;
+    MEnvironment    environment;
+    MConnection *   pConnection;
+
 private slots:
-    void connection();
+    void doConnectDirect();
+    void doConnect();
+    void doDropTable();
+    void doCreateTable();
+    void doInsert();
+    void doSelect();
+    void doDisconnect();
 };
 
 MYSQLPlusTest::MYSQLPlusTest()
 {
     fileDebugOut.setFileName( "MYSQLPlusTest.txt" );
-    if ( fileDebugOut.open( QFile::WriteOnly | QFile::Truncate ) ) 
+    if ( fileDebugOut.open( QFile::WriteOnly | QFile::Truncate ) )
     {
         MYODBCDbgInit( &fileDebugOut );
     }
@@ -34,27 +44,120 @@
 {
     MYODBCDbgFini();
     fileDebugOut.close();
+
+    /* MEnvironment cleans up its child objects (MConnection(s) for example)
automagically. */
 }
 
-void MYSQLPlusTest::connection()
+/*!
+    \brief  Connect without using any ODBC system information.
+*/
+void MYSQLPlusTest::doConnectDirect()
 {
-    MEnvironment *      pEnvironment  = new MEnvironment();
-    MConnection *       pConnection   = new MConnection( pEnvironment );
+    MEnvironment *      pEnvironment    = new MEnvironment();
+    MConnection *       pConnection     = new MConnection( &environment );
     MYODBCInsDataSource datasource;
 
-    datasource.setSERVER( "192.168.0.33" );
-    datasource.setUID( "pharvey" );
-    datasource.setPWD( "pharvey" );
+    datasource.setSERVER( "localhost" );
+    datasource.setUID( "myodbctest" );
+    datasource.setPWD( "myodbctest" );
     datasource.setDATABASE( "test" );
 
     SQLRETURN nReturn = pConnection->doConnect( &datasource );
-    
+
     delete pEnvironment;
 
-    if ( !SQL_SUCCEEDED( nReturn ) )
-        QFAIL( "Failed to connect." );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
 }
 
+/*!
+    brief   Connect using ODBC Data Source Name (DSN) and leave the 
+            connection up for further tests.
+*/
+void MYSQLPlusTest::doConnect()
+{
+    pConnection = new MConnection( &environment );
+
+    SQLRETURN nReturn = pConnection->doConnect( TEXT("myodbctest"), SQL_NTS,
TEXT("myodbctest"), SQL_NTS, TEXT("myodbctest"), SQL_NTS );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+}
+
+void MYSQLPlusTest::doDropTable()
+{
+    SQLWCHAR *      psSQL = TEXT("DROP TABLE IF EXISTS tbMyODBCTest");
+    MStatement      statement( pConnection );
+
+    SQLRETURN nReturn = statement.doExecDirect( psSQL, SQL_NTS );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+}
+
+void MYSQLPlusTest::doCreateTable()
+{
+    SQLWCHAR *      psSQL = TEXT("CREATE TABLE tbMyODBCTest ( nUserID MEDIUMINT(8) NOT
NULL AUTO_INCREMENT, vcName VARCHAR(60) NOT NULL, PRIMARY KEY ( nUserID ), KEY ( vcName )
)");
+    MStatement      statement( pConnection );
+
+    SQLRETURN nReturn = statement.doExecDirect( psSQL, SQL_NTS );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+}
+
+void MYSQLPlusTest::doInsert()
+{
+    MStatement  statement( pConnection );
+    SQLRETURN   nReturn;
+
+    nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( 'name1' )"),
SQL_NTS );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+
+    nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( 'name2' )"),
SQL_NTS );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+
+    nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( 'name3' )"),
SQL_NTS );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+}
+
+void MYSQLPlusTest::doSelect()
+{
+    MStatement  statement( pConnection );
+    SQLRETURN   nReturn;
+    SQLINTEGER  nRows   = 0;
+    SQLINTEGER  nUserID = 0;
+    SQLWCHAR    psName[100];
+    SQLINTEGER  nStrLenOrInd;
+
+    nReturn = statement.doExecDirect( TEXT("SELECT * FROM tbMyODBCTest"), SQL_NTS );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+
+    nReturn = statement.doRowCount( &nRows );
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+    QCOMPARE( nRows, (SQLINTEGER)3 );
+
+    nRows = 0;
+    while ( 1 )
+    {
+        nReturn = statement.doFetch();
+        if ( nReturn == SQL_NO_DATA )
+            break;
+
+        QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+
+        nRows++;
+
+        nReturn = statement.getData( 1, SQL_C_ULONG, &nUserID, SQL_IS_INTEGER,
&nStrLenOrInd );
+        QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+        QVERIFY( nStrLenOrInd >= 0 );
+
+        nReturn = statement.getData( 2, SQL_C_CHAR, &psName, sizeof(psName),
&nStrLenOrInd );
+        QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+        QVERIFY( nStrLenOrInd >= 1 );
+    }
+    QCOMPARE( nRows, (SQLINTEGER)3 );
+}
+
+void MYSQLPlusTest::doDisconnect()
+{
+    SQLRETURN nReturn = pConnection->doDisconnect();
+    QVERIFY( SQL_SUCCEEDED( nReturn ) );
+}
+
 QTEST_MAIN( MYSQLPlusTest )
 #include "MYSQLPlusTest.moc"
 

Thread
Connector/ODBC 5 commit: r231 - in MYSQLPlus: MYSQLPlusLib MYSQLPlusTestpharvey13 May