Date: Monday, February 27, 2006 @ 15:41:38
  Author: gilles
    Path: /cvsroot/carob/carob/test

   Added: 20-Write/TestExecWriteRequest.cpp (1.1)
          20-Write/TestExecWriteRequest.hpp (1.1)
          35-ResultList/TestExec.cpp (1.1) 35-ResultList/TestExec.hpp
          (1.1)
Modified: 30-ResultSet/TestExecReadRequest.cpp (1.1 -> 1.2)
          30-ResultSet/TestExecReadRequest.hpp (1.1 -> 1.2)
          CarobTestLauncher.cpp (1.24 -> 1.25)
 Removed: TestExecWriteRequest.cpp (1.17) TestExecWriteRequest.hpp (1.7)
          TestStatement.cpp (1.21) TestStatement.hpp (1.6)

Re-organized XXXExecXXX tests:
- modified TestExecXXX to use only statements (and not requests anymore)
- removed TestStatement that was testing exactly the same thing as TestExecXXX
- moved tests in their respective directory


--------------------------------------+
 20-Write/TestExecWriteRequest.cpp    |  142 +++++++++++
 20-Write/TestExecWriteRequest.hpp    |   62 +++++
 30-ResultSet/TestExecReadRequest.cpp |   95 +++++---
 30-ResultSet/TestExecReadRequest.hpp |    5 
 35-ResultList/TestExec.cpp           |  184 +++++++++++++++
 35-ResultList/TestExec.hpp           |   57 ++++
 CarobTestLauncher.cpp                |    6 
 TestExecWriteRequest.cpp             |  145 ------------
 TestExecWriteRequest.hpp             |   61 -----
 TestStatement.cpp                    |  391 ---------------------------------
 TestStatement.hpp                    |   96 --------
 11 files changed, 521 insertions(+), 723 deletions(-)


Index: carob/test/20-Write/TestExecWriteRequest.cpp
diff -u /dev/null carob/test/20-Write/TestExecWriteRequest.cpp:1.1
--- /dev/null   Mon Feb 27 15:41:38 2006
+++ carob/test/20-Write/TestExecWriteRequest.cpp        Mon Feb 27 15:41:37 2006
@@ -0,0 +1,142 @@
+/*
+ * Sequoia: Database clustering technology.
+ * Copyright (C) 2005-2006 Continuent, Inc.
+ * Contact: [EMAIL PROTECTED]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Initial developer(s): Gilles Rayrat
+ * Contributor(s): 
+ */
+
+#include "TestExecWriteRequest.hpp"
+
+#include "Statement.hpp"
+
+#include "CarobException.hpp"
+#include "Common.hpp"
+
+#include <string>
+
+using std::wstring;
+
+using namespace CarobNS;
+
+void TestExecWriteRequest::testWriteBadRequest()
+{
+  wstring fctName(L"TestExecWriteRequest::testWriteBadRequest");
+  try
+  {
+    Statement* statementPtr = connectionPtr->createStatement();
+    if (isInfoEnabled())
+    {
+      logInfo(fctName, L"Executing dummy update - should fail");
+    }
+    statementPtr->executeUpdate(L"dummy request");
+    // We should receive an exception instead of coming here
+    CPPUNIT_ASSERT(false);
+  }
+  catch (ControllerException ce)
+  {
+    if (isErrorEnabled())
+    {
+      logError(fctName, L"Update failed (this is ok). Exception: "
+          + ce.description());
+    }
+  }
+}
+
+void TestExecWriteRequest::testWriteBadTable()
+{
+  wstring fctName(L"TestExecWriteRequest::testWriteBadTable");
+  try
+  {
+    Statement* statementPtr = connectionPtr->createStatement();
+    if (isInfoEnabled())
+    {
+      logInfo(fctName, L"Executing bad table update - this should fail");
+    }
+    statementPtr->executeUpdate(L"update dummy set name='gotit' where id=0");
+    // We should receive an exception instead of coming here
+    CPPUNIT_ASSERT(false);
+  }
+  catch (BackendException be)
+  {
+    if (isErrorEnabled())
+    {
+      logError(fctName, L"Update failed (this is ok). Exception: "
+          + be.description());
+    }
+  }
+}
+
+void TestExecWriteRequest::testWriteGood()
+{
+  wstring fctName(L"TestExecWriteRequest::testWriteGood");
+  Statement* statementPtr = connectionPtr->createStatement();
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Executing update - should succeed");
+  }
+  int nbRowsAffected = statementPtr->executeUpdate(
+      L"update product set name='changed by testExecuteUpdateGood' where 
id=0");
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Update succeeded. Number of affected rows = "
+        + toWString(nbRowsAffected));
+  }
+  CPPUNIT_ASSERT(nbRowsAffected == 1);
+}
+
+void TestExecWriteRequest::testWriteThousandGood()
+{
+  wstring fctName(L"TestExecWriteRequest::testWriteThousandGood");
+  wstring requestBegin = L"UPDATE product SET cost=";
+  wstring requestEnd = L" WHERE id=";
+
+  Statement* statementPtr = connectionPtr->createStatement();
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Executing 1000 writes");
+  }
+  for (int i=0; i<1000; i++)
+  {
+    int nbRowsAffected = statementPtr->executeUpdate(requestBegin + 
toWString(i)
+                      + requestEnd + toWString(i%50));
+    CPPUNIT_ASSERT(nbRowsAffected == 1);
+  }
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"1000 writes succeeded");
+  }
+}
+
+CppUnit::Test* TestExecWriteRequest::suite()
+{
+  CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite( 
"TestExecWriteRequest" );
+
+  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecWriteRequest>(
+                                 "testWriteBadRequest", 
+                                 &TestExecWriteRequest::testWriteBadRequest));
+  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecWriteRequest>(
+                                 "testWriteBadTable", 
+                                 &TestExecWriteRequest::testWriteBadTable));
+  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecWriteRequest>(
+                                 "testWriteGood", 
+                                 &TestExecWriteRequest::testWriteGood));
+/*  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecWriteRequest>(
+                                 "testWriteThousandGood", 
+                                 
&TestExecWriteRequest::testWriteThousandGood));
+*/
+  return suiteOfTests;
+}
Index: carob/test/20-Write/TestExecWriteRequest.hpp
diff -u /dev/null carob/test/20-Write/TestExecWriteRequest.hpp:1.1
--- /dev/null   Mon Feb 27 15:41:38 2006
+++ carob/test/20-Write/TestExecWriteRequest.hpp        Mon Feb 27 15:41:37 2006
@@ -0,0 +1,62 @@
+/*
+ * Sequoia: Database clustering technology.
+ * Copyright (C) 2005-2006 Continuent, Inc.
+ * Contact: [EMAIL PROTECTED]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Initial developer(s): Gilles Rayrat
+ * Contributor(s): 
+ */
+
+#ifndef TESTEXECWRITEREQUEST_H_
+#define TESTEXECWRITEREQUEST_H_
+
+#include "../ConnectionSetup.hpp"
+
+/**
+ * Test class for ExecWriteRequest command.
+ * Tries to run a dummy request, then a request on a dummy table, then a 
+ * correct request and finally a correct request played 1000 times
+ * A controller *MUST* run locally for test success !!!
+ */
+class TestExecWriteRequest : public ConnectionSetup
+{
+public:
+  /** Suite of tests to be run */
+  static CppUnit::Test* suite();
+
+  /**
+   * Tries to send a dummy write request to the controller and checks that the
+   * error is consistent.
+   */
+  void testWriteBadRequest();
+  /**
+   * Tries to do a good write request on a dummy table and checks that the
+   * error is consistent.
+   */
+  void testWriteBadTable();
+  /**
+   * Sends a valid update request to the controller and checks that there is no
+   * error.
+   */
+  void testWriteGood();
+  /**
+   * Sends 1000 valid update requests to the controller and checks that there 
is
+   * no error.
+   * DISABLED TEST because too long
+   */
+  void testWriteThousandGood();
+};
+
+#endif /*TESTEXECWRITEREQUEST_H_*/
Index: carob/test/30-ResultSet/TestExecReadRequest.cpp
diff -u carob/test/30-ResultSet/TestExecReadRequest.cpp:1.1 
carob/test/30-ResultSet/TestExecReadRequest.cpp:1.2
--- carob/test/30-ResultSet/TestExecReadRequest.cpp:1.1 Fri Feb 24 19:07:41 2006
+++ carob/test/30-ResultSet/TestExecReadRequest.cpp     Mon Feb 27 15:41:38 2006
@@ -19,14 +19,16 @@
  * Contributor(s): 
  */
 
-#include <iostream>
+#include "TestExecReadRequest.hpp"
+
+#include "Statement.hpp"
+#include "ResultSetMetaData.hpp"
 
-#include "Common.hpp"
 #include "CarobException.hpp"
-#include "Connection.hpp"
-#include "DriverResultSet.hpp"
-#include "TestExecReadRequest.hpp"
-#include "RequestWithResultSetParameters.hpp"
+#include "Common.hpp"
+
+#include <string>
+#include <iostream>
 
 using std::wstring;
 using std::endl;
@@ -38,13 +40,12 @@
   wstring fctName(L"TestExecReadRequest::testReadBadRequest");
   try
   {
-    RequestWithResultSetParameters readReq(L"dummy request");
-    readReq.setEscapeProcessing(false).setTimeoutInSeconds(2);
+    Statement* statementPtr = connectionPtr->createStatement();
     if (isInfoEnabled())
     {
-      logInfo(fctName, L"Executing read - this should fail");
+      logInfo(fctName, L"Executing dummy read - should fail");
     }
-    connectionPtr->statementExecuteQuery(readReq);
+    statementPtr->executeQuery(L"dummy request");
     // We should receive an exception instead of coming here
     CPPUNIT_ASSERT(false);
   }
@@ -52,7 +53,8 @@
   {
     if (isErrorEnabled())
     {
-      logError(fctName, L"Read failed (this is ok). Exception: 
"+ce.description());
+      logError(fctName, L"Read failed (this is ok). Exception: "
+          + ce.description());
     }
   }
 }
@@ -62,14 +64,12 @@
   wstring fctName(L"TestExecReadRequest::testReadBadTable");
   try
   {
-    RequestWithResultSetParameters readReq(L"select * from dummy");
-    readReq.setEscapeProcessing(false).setTimeoutInSeconds(2);
-
+    Statement* statementPtr = connectionPtr->createStatement();
     if (isInfoEnabled())
     {
-      logInfo(fctName, L"Executing read - this should fail");
+      logInfo(fctName, L"Executing bad table read - should fail");
     }
-    connectionPtr->statementExecuteQuery(readReq);
+    statementPtr->executeQuery(L"select * from dummy");
     // We should receive an exception instead of coming here
     CPPUNIT_ASSERT(false);
   }
@@ -86,23 +86,34 @@
 void TestExecReadRequest::testReadGood()
 {
   wstring fctName(L"TestExecReadRequest::testReadGood");
-  RequestWithResultSetParameters readReq(L"select * from product");
-  readReq.setEscapeProcessing(false).setTimeoutInSeconds(2);
+
+
+  Statement* statementPtr = connectionPtr->createStatement();
   if (isInfoEnabled())
   {
-    logInfo(fctName, L"Executing read - this should succeed");
+    logInfo(fctName, L"Executing read - should succeed");
   }
-  DriverResultSet* drsPtr = connectionPtr->statementExecuteQuery(readReq);
+  statementPtr->setFetchSize(1);
+  DriverResultSet* drsPtr = statementPtr->executeQuery(
+      L"select * from address");
   if (isInfoEnabled())
   {
     logInfo(fctName, L"Read succeeded. Displaying 50 rows:");
   }
-  //Display 50 rows for debugging...
-    
-//    wcerr<<L"Row\tId\tName\t\tCost"<<endl;
+  //Display 50 rows using metadata and toString
+  ResultSetMetaData rsmd(drsPtr);
   std::wostringstream buffer;
-  buffer<<L"Row\tId\tFirstName\tLastName"<<endl;
-  for (int i=0; i<50; i++)
+  buffer<<L"25 first rows got as strings"<<endl;
+  for (int i=0; i<25; i++)
+  {
+    drsPtr->next();
+    buffer<<i+1<<L"\t";
+    for (int j=0; j<rsmd.getColumnCount(); j++)
+      buffer<<drsPtr->getAsString(j+1)<<L"\t";
+    buffer<<endl;
+  }
+  buffer<<L"25 next rows got as Int32, String and AsString"<<endl;
+  for (int i=25; i<50; i++)
   {
     drsPtr->next();
     buffer<<i+1<<L"\t"<<drsPtr->getInt32(1)
@@ -110,11 +121,38 @@
               <<L"\t\t"<<drsPtr->getAsString(3)<<endl;
   }
   if (isInfoEnabled())
+    logInfo(fctName, buffer.str());
+}
+
+void TestExecReadRequest::testReadWithMaxRows()
+{
+  wstring fctName(L"TestStatement::testReadWithMaxRows");
+  Statement* statementPtr = NULL;
+  statementPtr = connectionPtr->createStatement();
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Executing read with max rows = 1");
+  }
+  statementPtr->setMaxRows(1);
+  DriverResultSet* drsPtr = statementPtr->executeQuery(
+      L"select * from address");
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"executeQuery succeeded. Displaying first row.");
+  }
+  //wcerr<<L"Row\tId\tName\t\tCost"<<endl;
+  std::wostringstream buffer;
+  buffer<<L"Id\tFirstName\tLastName"<<endl;
+  CPPUNIT_ASSERT(drsPtr->next() == true);
+  buffer<<drsPtr->getInt32(1)
+       <<L"\t"<<drsPtr->getString(2)
+       <<L"\t\t"<<drsPtr->getString(3)<<endl;
+  if (isInfoEnabled())
   {
     logInfo(fctName, buffer.str());
   }
-  //We have to free the allocated result...
-  delete drsPtr;
+  //This next() should return false because we asked just 1 row
+  CPPUNIT_ASSERT(drsPtr->next() == false);
 }
 
 CppUnit::Test* TestExecReadRequest::suite()
@@ -129,6 +167,9 @@
   suiteOfTests->addTest(new CppUnit::TestCaller<TestExecReadRequest>(
                                  "testReadGood", 
                                  &TestExecReadRequest::testReadGood));
+  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecReadRequest>(
+                                 "testReadWithMaxRows", 
+                                 &TestExecReadRequest::testReadWithMaxRows));
 
   return suiteOfTests;
 }
Index: carob/test/30-ResultSet/TestExecReadRequest.hpp
diff -u carob/test/30-ResultSet/TestExecReadRequest.hpp:1.1 
carob/test/30-ResultSet/TestExecReadRequest.hpp:1.2
--- carob/test/30-ResultSet/TestExecReadRequest.hpp:1.1 Fri Feb 24 19:07:41 2006
+++ carob/test/30-ResultSet/TestExecReadRequest.hpp     Mon Feb 27 15:41:38 2006
@@ -51,6 +51,11 @@
    * error. Also displays a part of the result for manual check.
    */
   void testReadGood();
+  /**
+   * Tests a read with max rows to 1 and checks that the second call to next()
+   * returns false
+   */
+  void testReadWithMaxRows();
 };
 
 #endif /*TESTEXECREADREQUEST_H_*/
Index: carob/test/35-ResultList/TestExec.cpp
diff -u /dev/null carob/test/35-ResultList/TestExec.cpp:1.1
--- /dev/null   Mon Feb 27 15:41:38 2006
+++ carob/test/35-ResultList/TestExec.cpp       Mon Feb 27 15:41:37 2006
@@ -0,0 +1,184 @@
+/*
+ * Sequoia: Database clustering technology.
+ * Copyright (C) 2005-2006 Continuent, Inc.
+ * Contact: [EMAIL PROTECTED]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Initial developer(s): Gilles Rayrat
+ * Contributor(s): 
+ */
+
+#include "TestExec.hpp"
+
+#include "ResultSetMetaData.hpp"
+#include "Statement.hpp"
+
+#include "CarobException.hpp"
+#include "Common.hpp"
+
+#include <string>
+#include <iostream>
+
+using std::wstring;
+using std::endl;
+
+using namespace CarobNS;
+
+void TestExec::testExecuteBadRequests()
+{
+  wstring fctName(L"TestStatement::testExecuteBadRequests");
+  Statement* statementPtr = NULL;
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Testing execute with bad query \"dummy\" (should 
fail)");
+  }
+  try
+  {
+    statementPtr = connectionPtr->createStatement();
+    statementPtr->execute(L"dummy");
+    // We should receive an exception instead of coming here
+    CPPUNIT_ASSERT(false);
+  }
+  catch (BackendException be)
+  {
+    if (isErrorEnabled())
+    {
+      logError(fctName, L"Read failed (this is ok). Exception: "
+          + be.description());
+    }
+  }
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Testing execute with bad query \"SELECT * FROM dummy\" 
(should fail)");
+  }
+  try
+  {
+    statementPtr->execute(L"SELECT * FROM dummy");
+    // We should receive an exception instead of coming here
+    CPPUNIT_ASSERT(false);
+  }
+  catch (BackendException be)
+  {
+    if (isErrorEnabled())
+    {
+      logError(fctName, L"Read failed (this is ok). Exception: "
+          + be.description());
+    }
+  }
+}
+
+void TestExec::testExecuteWithSelect()
+{
+  wstring fctName(L"TestExec::testExecuteWithSelect");
+  Statement* statementPtr = NULL;
+  statementPtr = connectionPtr->createStatement();
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Executing execute(SELECT * FROM address) - should 
succeed");
+  }
+  bool isRS = statementPtr->execute(L"SELECT * FROM address");
+  CPPUNIT_ASSERT(isRS);
+  
+  DriverResultSet* drsPtr = statementPtr->getResultSet();
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Read succeeded. Displaying 50 rows:");
+  }
+  //Display 50 rows using metadata and toString
+  ResultSetMetaData rsmd(drsPtr);
+  std::wostringstream buffer;
+  for (int i=0; i<50; i++)
+  {
+    drsPtr->next();
+    buffer<<i+1<<L"\t";
+    for (int j=0; j<rsmd.getColumnCount(); j++)
+      buffer<<drsPtr->getAsString(j+1)<<L"\t";
+    buffer<<endl;
+  }
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, buffer.str());
+  }
+}
+void TestExec::testExecuteWithUpdate()
+{
+  wstring fctName(L"TestExec::testExecuteWithUpdate");
+  Statement* statementPtr = NULL;
+  statementPtr = connectionPtr->createStatement();
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Executing execute(UPDATE FROM address...) - should 
succeed");
+  }
+  bool isRS = statementPtr->execute(L"UPDATE product SET name='changed by 
testExecuteWithUpdate' WHERE id=0");
+  CPPUNIT_ASSERT(!isRS);
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Update with execute succeeded. Number of affected rows 
= "
+        + toWString(statementPtr->getUpdateCount()));
+  }
+  CPPUNIT_ASSERT(statementPtr->getUpdateCount() == 1);
+}
+
+void TestExec::testExecuteWithSelectStreamed()
+{
+  wstring fctName(L"TestExec::testExecuteWithSelectStreamed");
+  Statement* statementPtr = NULL;
+  statementPtr = connectionPtr->createStatement();
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Executing streamed execute(SELECT * FROM address) - 
should succeed");
+  }
+  statementPtr->setFetchSize(1);
+  bool isRS = statementPtr->execute(L"SELECT * FROM address");
+  CPPUNIT_ASSERT(isRS);
+  
+  DriverResultSet* drsPtr = statementPtr->getResultSet();
+  ResultSetMetaData rsmd(drsPtr);
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, L"Read succeeded. Displaying 50 rows:");
+  }
+  //Display rows using metadata and toString
+  std::wostringstream buffer;
+  while (drsPtr->next())
+  {
+    ResultSetMetaData rsmd(drsPtr);
+    for (int j=0; j<rsmd.getColumnCount(); j++)
+      buffer<<drsPtr->getAsString(j+1)<<L"\t";
+    buffer<<endl;
+  }
+  if (isInfoEnabled())
+  {
+    logInfo(fctName, buffer.str());
+  }
+}
+
+CppUnit::Test* TestExec::suite()
+{
+  CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite( "TestExec" );
+  suiteOfTests->addTest(new CppUnit::TestCaller<TestExec>(
+                                 "testExecuteBadRequests", 
+                                 &TestExec::testExecuteBadRequests));
+  suiteOfTests->addTest(new CppUnit::TestCaller<TestExec>(
+                                 "testExecuteWithSelect", 
+                                 &TestExec::testExecuteWithSelect));
+  suiteOfTests->addTest(new CppUnit::TestCaller<TestExec>(
+                                 "testExecuteWithUpdate", 
+                                 &TestExec::testExecuteWithUpdate));
+  suiteOfTests->addTest(new CppUnit::TestCaller<TestExec>(
+                                 "testExecuteWithSelectStreamed", 
+                                 &TestExec::testExecuteWithSelectStreamed));
+
+  return suiteOfTests;
+}
Index: carob/test/35-ResultList/TestExec.hpp
diff -u /dev/null carob/test/35-ResultList/TestExec.hpp:1.1
--- /dev/null   Mon Feb 27 15:41:38 2006
+++ carob/test/35-ResultList/TestExec.hpp       Mon Feb 27 15:41:38 2006
@@ -0,0 +1,57 @@
+/*
+ * Sequoia: Database clustering technology.
+ * Copyright (C) 2005-2006 Continuent, Inc.
+ * Contact: [EMAIL PROTECTED]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Initial developer(s): Gilles Rayrat
+ * Contributor(s): 
+ */
+
+#ifndef TESTEXEC_H_
+#define TESTEXEC_H_
+
+#include "../ConnectionSetup.hpp"
+
+/**
+ * Test class for Statement class.
+ * This is basically a copy of exec read and exec write commands testing
+ * A controller *MUST* run locally for test success !!!
+ */
+class TestExec : public ConnectionSetup
+{
+public:
+  /** Suite of tests to be run */
+  static CppUnit::Test* suite();
+
+  /**
+   * Tests execute function with bad query of different forms (bad query, wrong
+   * table)
+   */
+  void testExecuteBadRequests();
+  /**
+   * Tests execute function with a select statement
+   */
+  void testExecuteWithSelect();
+  /**
+   * Tests execute function with an update statement
+   */
+  void testExecuteWithUpdate();
+  /**
+   * Tests execute function with a select statement and max rows set to 1
+   */
+  void testExecuteWithSelectStreamed();
+};
+
+#endif /*TESTEXEC_H_*/
Index: carob/test/CarobTestLauncher.cpp
diff -u carob/test/CarobTestLauncher.cpp:1.24 
carob/test/CarobTestLauncher.cpp:1.25
--- carob/test/CarobTestLauncher.cpp:1.24       Fri Feb 24 19:07:41 2006
+++ carob/test/CarobTestLauncher.cpp    Mon Feb 27 15:41:37 2006
@@ -39,14 +39,14 @@
 
 #include "TestBeginCommitRollback.hpp"
 #include "TestDriverResultSet.hpp"
-#include "TestExecWriteRequest.hpp"
-#include "TestStatement.hpp"
 #include "01-Unit/TestStringCodecs.hpp"
 #include "10-Connection/TestConnect.hpp"
 #include "10-Connection/TestControllerConnectPolicy.hpp"
 #include "10-Connection/TestFailOver.hpp"
+#include "20-Write/TestExecWriteRequest.hpp"
 #include "30-ResultSet/TestSimpleUnicode.hpp"
 #include "30-ResultSet/TestExecReadRequest.hpp"
+#include "35-ResultList/TestExec.hpp"
 #include "40-Parameter-PreparedStatement/TestParameterStatement.hpp"
 #include "40-Parameter-PreparedStatement/TestPreparedStatement.hpp"
 #include "40-Parameter-PreparedStatement/TestIEEE754.hpp"
@@ -72,8 +72,8 @@
   runner.addTest(TestConnect::suite());
   runner.addTest(TestExecWriteRequest::suite());
   runner.addTest(TestExecReadRequest::suite());
+  runner.addTest(TestExec::suite());
   runner.addTest(TestBeginCommitRollback::suite());
-  runner.addTest(TestStatement::suite());
   runner.addTest(TestDriverResultSet::suite());
   runner.addTest(TestStringCodecs::suite());
   runner.addTest(TestSimpleUnicode::suite());
Index: carob/test/TestExecWriteRequest.cpp
diff -u carob/test/TestExecWriteRequest.cpp:1.17 
carob/test/TestExecWriteRequest.cpp:removed
--- carob/test/TestExecWriteRequest.cpp:1.17    Tue Feb 14 18:35:47 2006
+++ carob/test/TestExecWriteRequest.cpp Mon Feb 27 15:41:38 2006
@@ -1,145 +0,0 @@
-/*
- * Sequoia: Database clustering technology.
- * Copyright (C) 2005 Emic Networks
- * Contact: [EMAIL PROTECTED]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Initial developer(s): Gilles Rayrat
- * Contributor(s): 
- */
-
-#include "Common.hpp"
-#include "Connection.hpp"
-#include "CarobException.hpp"
-#include "DriverResultSet.hpp"
-#include "TestExecWriteRequest.hpp"
-#include "Request.hpp"
-
-using std::wstring;
-
-using namespace CarobNS;
-
-void TestExecWriteRequest::testWriteBadRequest()
-{
-  wstring fctName(L"TestExecWriteRequest::testWriteBadRequest");
-  try
-  {
-    Request updtReq(L"dummy request");
-    updtReq.setEscapeProcessing(false).setTimeoutInSeconds(2);
-    if (isInfoEnabled())
-    {
-      logInfo(fctName, L"Executing write - should fail");
-    }
-    connectionPtr->statementExecuteUpdate(updtReq);
-    // We should receive an exception instead of coming here
-    CPPUNIT_ASSERT(false);
-  }
-  catch (ControllerException ce)
-  {
-    if (isErrorEnabled())
-    {
-      logError(fctName, L"Write failed (this is ok). Exception:"
-          + ce.description());
-    }
-    CPPUNIT_ASSERT(true);
-  }
-}
-
-void TestExecWriteRequest::testWriteBadTable()
-{
-  wstring fctName(L"TestExecWriteRequest::testWriteBadTable");
-  try
-  {
-    Request updtReq(L"update dummy set name='gotit' where id=0");
-    updtReq.setEscapeProcessing(false).setTimeoutInSeconds(2);
-    if (isInfoEnabled())
-    {
-      logInfo(fctName, L"Executing write - should fail");
-    }
-    connectionPtr->statementExecuteUpdate(updtReq);
-    // We should receive an exception instead of coming here
-    CPPUNIT_ASSERT(false);
-  }
-  catch (BackendException be)
-  {
-    if (isErrorEnabled())
-    {
-      logError(fctName, L"Write failed (this is ok). Exception:"
-          + be.description());
-    }
-  }
-}
-
-void TestExecWriteRequest::testWriteGood()
-{
-  wstring fctName(L"TestExecWriteRequest::testWriteGood");
-  Request updtReq(L"update product set name='changed' where id=0");
-  updtReq.setEscapeProcessing(false).setTimeoutInSeconds(2);
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Executing write - should succeed");
-  }
-  int nbRowsAffected = connectionPtr->statementExecuteUpdate(updtReq);
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Write succeed. Number of rows updated:"
-        + toWString(nbRowsAffected));
-  }
-  CPPUNIT_ASSERT(nbRowsAffected == 1);
-}
-
-void TestExecWriteRequest::testWriteThousandGood()
-{
-  wstring fctName(L"TestExecWriteRequest::testWriteGood");
-  wstring requestBegin = L"UPDATE product SET cost=";
-  wstring requestEnd = L" where id=";
-  
-  Request updtReq(L"");
-  updtReq.setEscapeProcessing(false).setTimeoutInSeconds(2);
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Executing 1000 writes");
-  }
-  for (int i=0; i<1000; i++)
-  {
-    updtReq.setSqlQueryOrTemplate(requestBegin + toWString(i)
-                      + requestEnd + toWString(i%50));
-    int nbRowsAffected = connectionPtr->statementExecuteUpdate(updtReq);
-    CPPUNIT_ASSERT(nbRowsAffected == 1);
-  }
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"1000 writes succeeded");
-  }
-}
-
-CppUnit::Test* TestExecWriteRequest::suite()
-{
-  CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite( 
"TestExecWriteRequest" );
-
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecWriteRequest>(
-                                 "testWriteBadRequest", 
-                                 &TestExecWriteRequest::testWriteBadRequest));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecWriteRequest>(
-                                 "testWriteBadTable", 
-                                 &TestExecWriteRequest::testWriteBadTable));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecWriteRequest>(
-                                 "testWriteGood", 
-                                 &TestExecWriteRequest::testWriteGood));
-/*  suiteOfTests->addTest(new CppUnit::TestCaller<TestExecWriteRequest>(
-                                 "testWriteThousandGood", 
-                                 
&TestExecWriteRequest::testWriteThousandGood));
-*/
-  return suiteOfTests;
-}
Index: carob/test/TestExecWriteRequest.hpp
diff -u carob/test/TestExecWriteRequest.hpp:1.7 
carob/test/TestExecWriteRequest.hpp:removed
--- carob/test/TestExecWriteRequest.hpp:1.7     Fri Dec 16 17:41:08 2005
+++ carob/test/TestExecWriteRequest.hpp Mon Feb 27 15:41:38 2006
@@ -1,61 +0,0 @@
-/*
- * Sequoia: Database clustering technology.
- * Copyright (C) 2005 Emic Networks
- * Contact: [EMAIL PROTECTED]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Initial developer(s): Gilles Rayrat
- * Contributor(s): 
- */
-
-#ifndef TESTEXECWRITEREQUEST_H_
-#define TESTEXECWRITEREQUEST_H_
-
-#include "ConnectionSetup.hpp"
-
-/**
- * Test class for ExecWriteRequest command.
- * Tries to run a dummy request, then a request on a dummy table, then a 
- * correct request and finally a correct request played 1000 times
- * A controller *MUST* run locally for test success !!!
- */
-class TestExecWriteRequest : public ConnectionSetup
-{
-public:
-  /** Suite of tests to be run */
-  static CppUnit::Test* suite();
-
-  /**
-   * Tries to send a dummy write request to the controller and checks that the
-   * error is consistent.
-   */
-  void testWriteBadRequest();
-  /**
-   * Tries to do a good write request on a dummy table and checks that the
-   * error is consistent.
-   */
-  void testWriteBadTable();
-  /**
-   * Sends a valid update request to the controller and checks that there is no
-   * error.
-   */
-  void testWriteGood();
-  /**
-   * Sends 1000 valid update requests to the controller and checks that there 
is
-   * no error.
-   */
-  void testWriteThousandGood();
-};
-
-#endif /*TESTEXECWRITEREQUEST_H_*/
Index: carob/test/TestStatement.cpp
diff -u carob/test/TestStatement.cpp:1.21 carob/test/TestStatement.cpp:removed
--- carob/test/TestStatement.cpp:1.21   Tue Feb 14 18:35:47 2006
+++ carob/test/TestStatement.cpp        Mon Feb 27 15:41:38 2006
@@ -1,391 +0,0 @@
-/*
- * Sequoia: Database clustering technology.
- * Copyright (C) 2005 Emic Networks
- * Contact: [EMAIL PROTECTED]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Initial developer(s): Gilles Rayrat
- * Contributor(s): 
- */
-
-#include <iostream>
-
-#include "Common.hpp"
-#include "Connection.hpp"
-#include "CarobException.hpp"
-#include "DriverResultSet.hpp"
-#include "TestStatement.hpp"
-#include "RequestWithResultSetParameters.hpp"
-#include "ResultSetMetaData.hpp"
-#include "Statement.hpp"
-
-using std::wstring;
-using std::endl;
-
-using namespace CarobNS;
-
-//EXECUTE QUERY
-void TestStatement::testExecuteQueryBadRequest()
-{
-  wstring fctName(L"TestStatement::testExecuteQueryBadRequest");
-  Statement* statementPtr = NULL;
-  try
-  {
-    statementPtr = connectionPtr->createStatement();
-    if (isInfoEnabled())
-    {
-      logInfo(fctName, L"Executing dummy read - should fail");
-    }
-    statementPtr->executeQuery(L"dummy request");
-    // We should receive an exception instead of coming here
-    CPPUNIT_ASSERT(false);
-  }
-  catch (ControllerException ce)
-  {
-    if (isErrorEnabled())
-    {
-      logError(fctName, L"Read failed (this is ok). Exception: "
-          + ce.description());
-    }
-  }
-}
-
-void TestStatement::testExecuteQueryBadTable()
-{
-  wstring fctName(L"testExecuteQueryBadTable");
-  Statement* statementPtr = NULL;
-  try
-  {
-    statementPtr = connectionPtr->createStatement();
-    if (isInfoEnabled())
-    {
-      logInfo(fctName, L"Executing bad table read - should fail");
-    }
-    statementPtr->executeQuery(L"select * from dummy");
-    // We should receive an exception instead of coming here
-    CPPUNIT_ASSERT(false);
-  }
-  catch (BackendException be)
-  {
-    if (isErrorEnabled())
-    {
-      logError(fctName, L"Read failed (this is ok). Exception: "
-          + be.description());
-    }
-  }
-}
-
-void TestStatement::testExecuteQueryGood()
-{
-  wstring fctName(L"TestStatement::testExecuteQueryGood");
-  Statement* statementPtr = NULL;
-  statementPtr = connectionPtr->createStatement();
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Executing read - should succeed");
-  }
-  statementPtr->setFetchSize(1);
-  DriverResultSet* drsPtr = statementPtr->executeQuery(
-      L"select * from address");
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Read succeeded. Displaying 50 rows:");
-  }
-  //Display 50 rows using metadata and toString
-  ResultSetMetaData rsmd(drsPtr);
-  std::wostringstream buffer;
-  for (int i=0; i<50; i++)
-  {
-    drsPtr->next();
-    buffer<<i+1<<L"\t";
-    for (int j=0; j<rsmd.getColumnCount(); j++)
-      buffer<<drsPtr->getAsString(j+1)<<L"\t";
-    buffer<<endl;
-  }
-  if (isInfoEnabled())
-    logInfo(fctName, buffer.str());
-
-}
-
-
-//EXECUTE UPDATE
-
-void TestStatement::testExecuteUpdateBadRequest()
-{
-  wstring fctName(L"TestStatement::testExecuteUpdateBadRequest");
-  Statement* statementPtr = NULL;
-  try
-  {
-    statementPtr = connectionPtr->createStatement();
-    if (isInfoEnabled())
-    {
-      logInfo(fctName, L"Executing dummy update - should fail");
-    }
-    statementPtr->executeUpdate(L"dummy request");
-    // We should receive an exception instead of coming here
-    CPPUNIT_ASSERT(false);
-  }
-  catch (ControllerException ce)
-  {
-    if (isErrorEnabled())
-    {
-      logError(fctName, L"Update failed (this is ok). Exception: "
-          + ce.description());
-    }
-  }
-}
-
-void TestStatement::testExecuteUpdateBadTable()
-{
-  wstring fctName(L"testExecuteUpdateBadTable");
-  Statement* statementPtr = NULL;
-  try
-  {
-    statementPtr = connectionPtr->createStatement();
-    if (isInfoEnabled())
-    {
-      logInfo(fctName, L"Executing bad table update - this should fail");
-    }
-    statementPtr->executeUpdate(L"update dummy set name='gotit' where id=0");
-    // We should receive an exception instead of coming here
-    CPPUNIT_ASSERT(false);
-  }
-  catch (BackendException be)
-  {
-    if (isErrorEnabled())
-    {
-      logError(fctName, L"Update failed (this is ok). Exception: "
-          + be.description());
-    }
-  }
-}
-
-void TestStatement::testExecuteUpdateGood()
-{
-  wstring fctName(L"TestStatement::testExecuteUpdateGood");
-  Statement* statementPtr = NULL;
-  statementPtr = connectionPtr->createStatement();
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Executing update - should succeed");
-  }
-  int nbRowsAffected = statementPtr->executeUpdate(
-      L"update product set name='changed by testExecuteUpdateGood' where 
id=0");
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Update succeeded. Number of affected rows = "
-        + toWString(nbRowsAffected));
-  }
-  CPPUNIT_ASSERT(nbRowsAffected == 1);
-}
-
-void TestStatement::testExecuteQueryWithMaxRows()
-{
-  wstring fctName(L"TestStatement::testExecuteQueryWithMaxRows");
-  Statement* statementPtr = NULL;
-  statementPtr = connectionPtr->createStatement();
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Executing read with max rows = 1");
-  }
-  statementPtr->setMaxRows(1);
-  DriverResultSet* drsPtr = statementPtr->executeQuery(
-      L"select * from address");
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"executeQuery succeeded. Displaying first row.");
-  }
-  //wcerr<<L"Row\tId\tName\t\tCost"<<endl;
-  std::wostringstream buffer;
-  buffer<<L"Id\tFirstName\tLastName"<<endl;
-  CPPUNIT_ASSERT(drsPtr->next() == true);
-  buffer<<drsPtr->getInt32(1)
-       <<L"\t"<<drsPtr->getString(2)
-       <<L"\t\t"<<drsPtr->getString(3)<<endl;
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, buffer.str());
-  }
-  //This next() should return false because we asked just 1 row
-  CPPUNIT_ASSERT(drsPtr->next() == false);
-}
-
-void TestStatement::testExecuteBadRequests()
-{
-  wstring fctName(L"TestStatement::testExecuteBadRequests");
-  Statement* statementPtr = NULL;
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Testing execute with bad query \"dummy\" (should 
fail)");
-  }
-  try
-  {
-    statementPtr = connectionPtr->createStatement();
-    statementPtr->execute(L"dummy");
-    // We should receive an exception instead of coming here
-    CPPUNIT_ASSERT(false);
-  }
-  catch (BackendException be)
-  {
-    if (isErrorEnabled())
-    {
-      logError(fctName, L"Read failed (this is ok). Exception: "
-          + be.description());
-    }
-  }
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Testing execute with bad query \"SELECT * FROM dummy\" 
(should fail)");
-  }
-  try
-  {
-    statementPtr->execute(L"SELECT * FROM dummy");
-    // We should receive an exception instead of coming here
-    CPPUNIT_ASSERT(false);
-  }
-  catch (BackendException be)
-  {
-    if (isErrorEnabled())
-    {
-      logError(fctName, L"Read failed (this is ok). Exception: "
-          + be.description());
-    }
-  }
-}
-
-void TestStatement::testExecuteWithSelect()
-{
-  wstring fctName(L"TestStatement::testExecuteWithSelect");
-  Statement* statementPtr = NULL;
-  statementPtr = connectionPtr->createStatement();
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Executing execute(SELECT * FROM address) - should 
succeed");
-  }
-  bool isRS = statementPtr->execute(L"SELECT * FROM address");
-  CPPUNIT_ASSERT(isRS);
-  
-  DriverResultSet* drsPtr = statementPtr->getResultSet();
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Read succeeded. Displaying 50 rows:");
-  }
-  //Display 50 rows using metadata and toString
-  ResultSetMetaData rsmd(drsPtr);
-  std::wostringstream buffer;
-  for (int i=0; i<50; i++)
-  {
-    drsPtr->next();
-    buffer<<i+1<<L"\t";
-    for (int j=0; j<rsmd.getColumnCount(); j++)
-      buffer<<drsPtr->getAsString(j+1)<<L"\t";
-    buffer<<endl;
-  }
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, buffer.str());
-  }
-}
-void TestStatement::testExecuteWithUpdate()
-{
-  wstring fctName(L"TestStatement::testExecuteWithUpdate");
-  Statement* statementPtr = NULL;
-  statementPtr = connectionPtr->createStatement();
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Executing execute(UPDATE FROM address...) - should 
succeed");
-  }
-  bool isRS = statementPtr->execute(L"UPDATE product SET name='changed by 
testExecuteWithUpdate' WHERE id=0");
-  CPPUNIT_ASSERT(!isRS);
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Update with execute succeeded. Number of affected rows 
= "
-        + toWString(statementPtr->getUpdateCount()));
-  }
-  CPPUNIT_ASSERT(statementPtr->getUpdateCount() == 1);
-}
-
-void TestStatement::testExecuteWithSelectStreamed()
-{
-  wstring fctName(L"TestStatement::testExecuteWithSelectStreamed");
-  Statement* statementPtr = NULL;
-  statementPtr = connectionPtr->createStatement();
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Executing streamed execute(SELECT * FROM address) - 
should succeed");
-  }
-  statementPtr->setFetchSize(1);
-  bool isRS = statementPtr->execute(L"SELECT * FROM address");
-  CPPUNIT_ASSERT(isRS);
-  
-  DriverResultSet* drsPtr = statementPtr->getResultSet();
-  ResultSetMetaData rsmd(drsPtr);
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, L"Read succeeded. Displaying 50 rows:");
-  }
-  //Display rows using metadata and toString
-  std::wostringstream buffer;
-  while (drsPtr->next())
-  {
-    ResultSetMetaData rsmd(drsPtr);
-    for (int j=0; j<rsmd.getColumnCount(); j++)
-      buffer<<drsPtr->getAsString(j+1)<<L"\t";
-    buffer<<endl;
-  }
-  if (isInfoEnabled())
-  {
-    logInfo(fctName, buffer.str());
-  }
-}
-
-CppUnit::Test* TestStatement::suite()
-{
-  CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite( "TestStatement" );
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteQueryBadRequest", 
-                                 &TestStatement::testExecuteQueryBadRequest));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteQueryBadTable", 
-                                 &TestStatement::testExecuteQueryBadTable));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteQueryGood", 
-                                 &TestStatement::testExecuteQueryGood));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteUpdateBadRequest", 
-                                 &TestStatement::testExecuteUpdateBadRequest));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteUpdateBadTable", 
-                                 &TestStatement::testExecuteUpdateBadTable));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteUpdateGood", 
-                                 &TestStatement::testExecuteUpdateGood));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteQueryWithMaxRows", 
-                                 &TestStatement::testExecuteQueryWithMaxRows));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteBadRequests", 
-                                 &TestStatement::testExecuteBadRequests));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteWithSelect", 
-                                 &TestStatement::testExecuteWithSelect));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteWithUpdate", 
-                                 &TestStatement::testExecuteWithUpdate));
-  suiteOfTests->addTest(new CppUnit::TestCaller<TestStatement>(
-                                 "testExecuteWithSelectStreamed", 
-                                 
&TestStatement::testExecuteWithSelectStreamed));
-
-  return suiteOfTests;
-}
Index: carob/test/TestStatement.hpp
diff -u carob/test/TestStatement.hpp:1.6 carob/test/TestStatement.hpp:removed
--- carob/test/TestStatement.hpp:1.6    Fri Dec 16 17:41:08 2005
+++ carob/test/TestStatement.hpp        Mon Feb 27 15:41:38 2006
@@ -1,96 +0,0 @@
-/*
- * Sequoia: Database clustering technology.
- * Copyright (C) 2005 Emic Networks
- * Contact: [EMAIL PROTECTED]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Initial developer(s): Gilles Rayrat
- * Contributor(s): 
- */
-
-#ifndef TESTSTATEMENT_H_
-#define TESTSTATEMENT_H_
-
-#include "ConnectionSetup.hpp"
-
-/**
- * Test class for Statement class.
- * This is basically a copy of exec read and exec write commands testing
- * A controller *MUST* run locally for test success !!!
- */
-class TestStatement : public ConnectionSetup
-{
-public:
-  /** Suite of tests to be run */
-  static CppUnit::Test* suite();
-
-  //EXECUTE QUERY
-  /**
-   * Tries to send a dummy read request via a Statement to the controller and
-   * checks that the error is consistent.
-   */
-  void testExecuteQueryBadRequest();
-  /**
-   * Tries to do a good read request on a dummy table via a Statement and
-   * checks that the error is consistent.
-   */
-  void testExecuteQueryBadTable();
-  /**
-   * Sends a valid select request to the controller via a Statement and checks
-   * that there is no error. Also displays a part of the result for manual
-   * checking.
-   */
-  void testExecuteQueryGood();
-  
-  //EXECUTE UPDATE
-  /**
-   * Tries to send a dummy write request to the controller via a Statement and
-   * checks that the error is consistent.
-   */
-  void testExecuteUpdateBadRequest();
-  /**
-   * Tries to do a good write request on a dummy table via a Statement and
-   * checks that the error is consistent.
-   */
-  void testExecuteUpdateBadTable();
-  /**
-   * Sends a valid update request to the controller via a Statement and checks
-   * that there is no error.
-   */
-  void testExecuteUpdateGood();
-  /**
-   * Tests a read with max rows to 1 and checks that the second call to next()
-   * returns false
-   */
-  void testExecuteQueryWithMaxRows();
-  /**
-   * Tests execute function with bad query of different forms (bad query, wrong
-   * table)
-   */
-  void testExecuteBadRequests();
-  /**
-   * Tests execute function with a select statement
-   */
-  void testExecuteWithSelect();
-  /**
-   * Tests execute function with an update statement
-   */
-  void testExecuteWithUpdate();
-  /**
-   * Tests execute function with a select statement and max rows set to 1
-   */
-  void testExecuteWithSelectStreamed();
-};
-
-#endif /*TESTSTATEMENT_H_*/

_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits

Reply via email to