summaryrefslogtreecommitdiff
path: root/cpp/test
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2006-11-07 16:58:31 +0000
committerGordon Sim <gsim@apache.org>2006-11-07 16:58:31 +0000
commitfd69619118c808b2c30af3dbb4a9882f192237b3 (patch)
tree21e6fd2171eab3a028ff8c9bbb847a24b6410536 /cpp/test
parent0b03d292bad662cf4e65017bf944937b54b6933d (diff)
downloadqpid-python-fd69619118c808b2c30af3dbb4a9882f192237b3.tar.gz
Modified TransactionalStore to return the txn ctxt as an auto_ptr to make ownership more obvious.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@472166 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/test')
-rw-r--r--cpp/test/unit/qpid/broker/TxAckTest.cpp2
-rw-r--r--cpp/test/unit/qpid/broker/TxBufferTest.cpp84
-rw-r--r--cpp/test/unit/qpid/broker/TxPublishTest.cpp2
3 files changed, 46 insertions, 42 deletions
diff --git a/cpp/test/unit/qpid/broker/TxAckTest.cpp b/cpp/test/unit/qpid/broker/TxAckTest.cpp
index a619809b97..b6f8fbc1a1 100644
--- a/cpp/test/unit/qpid/broker/TxAckTest.cpp
+++ b/cpp/test/unit/qpid/broker/TxAckTest.cpp
@@ -48,7 +48,7 @@ class TxAckTest : public CppUnit::TestCase
void enqueue(TransactionContext*, Message::shared_ptr&, const Queue&, const string * const){}
void committed(const string * const){}
void aborted(const string * const){}
- TransactionContext* begin(){ return 0; }
+ std::auto_ptr<TransactionContext> begin(){ return std::auto_ptr<TransactionContext>(); }
void commit(TransactionContext*){}
void abort(TransactionContext*){}
~TestMessageStore(){}
diff --git a/cpp/test/unit/qpid/broker/TxBufferTest.cpp b/cpp/test/unit/qpid/broker/TxBufferTest.cpp
index 35b92671aa..e9c531fad1 100644
--- a/cpp/test/unit/qpid/broker/TxBufferTest.cpp
+++ b/cpp/test/unit/qpid/broker/TxBufferTest.cpp
@@ -34,35 +34,6 @@ template <class T> void assertEqualVector(std::vector<T>& expected, std::vector<
class TxBufferTest : public CppUnit::TestCase
{
- class TestTransactionContext : public TransactionContext{
- enum states {OPEN = 1, COMMITTED = 2, ABORTED = 3};
- int state;
- public:
- TestTransactionContext() : state(OPEN) {}
- void commit(){
- if(state != OPEN) throw "txn already completed";
- state = COMMITTED;
- }
-
- void abort(){
- if(state != OPEN) throw "txn already completed";
- state = ABORTED;
- }
-
- bool isCommitted(){
- return state == COMMITTED;
- }
-
- bool isAborted(){
- return state == ABORTED;
- }
-
- bool isOpen(){
- return state == OPEN;
- }
- ~TestTransactionContext(){}
- };
-
class MockTxOp : public TxOp{
enum op_codes {PREPARE=2, COMMIT=4, ROLLBACK=8};
std::vector<int> expected;
@@ -105,24 +76,45 @@ class TxBufferTest : public CppUnit::TestCase
std::vector<int> expected;
std::vector<int> actual;
+ enum states {OPEN = 1, COMMITTED = 2, ABORTED = 3};
+ int state;
+
+ class TestTransactionContext : public TransactionContext{
+ MockTransactionalStore* store;
+ public:
+ TestTransactionContext(MockTransactionalStore* _store) : store(_store) {}
+ void commit(){
+ if(store->state != OPEN) throw "txn already completed";
+ store->state = COMMITTED;
+ }
+
+ void abort(){
+ if(store->state != OPEN) throw "txn already completed";
+ store->state = ABORTED;
+ }
+ ~TestTransactionContext(){}
+ };
+
+
public:
- TestTransactionContext txn;
+ MockTransactionalStore() : state(OPEN){}
- TransactionContext* begin(){
+ std::auto_ptr<TransactionContext> begin(){
actual.push_back(BEGIN);
- return &txn;
+ std::auto_ptr<TransactionContext> txn(new TestTransactionContext(this));
+ return txn;
}
void commit(TransactionContext* ctxt){
actual.push_back(COMMIT);
- TestTransactionContext* _txn(dynamic_cast<TestTransactionContext*>(ctxt));
- CPPUNIT_ASSERT_EQUAL(_txn, &txn);
- _txn->commit();
+ TestTransactionContext* txn(dynamic_cast<TestTransactionContext*>(ctxt));
+ CPPUNIT_ASSERT(txn);
+ txn->commit();
}
void abort(TransactionContext* ctxt){
actual.push_back(ABORT);
- TestTransactionContext* _txn(dynamic_cast<TestTransactionContext*>(ctxt));
- CPPUNIT_ASSERT_EQUAL(_txn, &txn);
- _txn->abort();
+ TestTransactionContext* txn(dynamic_cast<TestTransactionContext*>(ctxt));
+ CPPUNIT_ASSERT(txn);
+ txn->abort();
}
MockTransactionalStore& expectBegin(){
expected.push_back(BEGIN);
@@ -139,6 +131,18 @@ class TxBufferTest : public CppUnit::TestCase
void check(){
assertEqualVector(expected, actual);
}
+
+ bool isCommitted(){
+ return state == COMMITTED;
+ }
+
+ bool isAborted(){
+ return state == ABORTED;
+ }
+
+ bool isOpen(){
+ return state == OPEN;
+ }
~MockTransactionalStore(){}
};
@@ -170,7 +174,7 @@ class TxBufferTest : public CppUnit::TestCase
CPPUNIT_ASSERT(buffer.prepare(&store));
buffer.commit();
store.check();
- CPPUNIT_ASSERT(store.txn.isCommitted());
+ CPPUNIT_ASSERT(store.isCommitted());
opA.check();
opB.check();
opC.check();
@@ -193,7 +197,7 @@ class TxBufferTest : public CppUnit::TestCase
CPPUNIT_ASSERT(!buffer.prepare(&store));
store.check();
- CPPUNIT_ASSERT(store.txn.isAborted());
+ CPPUNIT_ASSERT(store.isAborted());
opA.check();
opB.check();
opC.check();
diff --git a/cpp/test/unit/qpid/broker/TxPublishTest.cpp b/cpp/test/unit/qpid/broker/TxPublishTest.cpp
index b8387b0752..a3a72b9475 100644
--- a/cpp/test/unit/qpid/broker/TxPublishTest.cpp
+++ b/cpp/test/unit/qpid/broker/TxPublishTest.cpp
@@ -49,7 +49,7 @@ class TxPublishTest : public CppUnit::TestCase
void dequeue(TransactionContext*, Message::shared_ptr&, const Queue&, const string * const){}
void committed(const string * const){}
void aborted(const string * const){}
- TransactionContext* begin(){ return 0; }
+ std::auto_ptr<TransactionContext> begin(){ return std::auto_ptr<TransactionContext>(); }
void commit(TransactionContext*){}
void abort(TransactionContext*){}
~TestMessageStore(){}