mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-20 22:31:31 +02:00
Various feature additions and fixes:
- asynchronous execution for Data::Statement - ActiveMethod copy and assignment - added Data components to $POCO_BASE/components - SQLite 64-bit integer default - SessionPool timer seconds to milliseconds - ODBC fix for subsequent calls to execute() - std::deque (instead of std::vector) as default container
This commit is contained in:
@@ -51,6 +51,11 @@ namespace
|
||||
class ActiveObject
|
||||
{
|
||||
public:
|
||||
typedef ActiveMethod<int, int, ActiveObject> IntIntType;
|
||||
typedef ActiveMethod<void, int, ActiveObject> VoidIntType;
|
||||
typedef ActiveMethod<void, void, ActiveObject> VoidVoidType;
|
||||
typedef ActiveMethod<int, void, ActiveObject> IntVoidType;
|
||||
|
||||
ActiveObject():
|
||||
testMethod(this, &ActiveObject::testMethodImpl),
|
||||
testVoid(this,&ActiveObject::testVoidOutImpl),
|
||||
@@ -63,13 +68,13 @@ namespace
|
||||
{
|
||||
}
|
||||
|
||||
ActiveMethod<int, int, ActiveObject> testMethod;
|
||||
IntIntType testMethod;
|
||||
|
||||
ActiveMethod<void, int, ActiveObject> testVoid;
|
||||
VoidIntType testVoid;
|
||||
|
||||
ActiveMethod<void, void, ActiveObject> testVoidInOut;
|
||||
VoidVoidType testVoidInOut;
|
||||
|
||||
ActiveMethod<int, void, ActiveObject> testVoidIn;
|
||||
IntVoidType testVoidIn;
|
||||
|
||||
void cont()
|
||||
{
|
||||
@@ -130,6 +135,46 @@ void ActiveMethodTest::testWait()
|
||||
}
|
||||
|
||||
|
||||
void ActiveMethodTest::testCopy()
|
||||
{
|
||||
ActiveObject activeObj;
|
||||
|
||||
ActiveObject::IntIntType ii = activeObj.testMethod;
|
||||
ActiveResult<int> rii = ii(123);
|
||||
assert (!rii.available());
|
||||
activeObj.cont();
|
||||
rii.wait();
|
||||
assert (rii.available());
|
||||
assert (rii.data() == 123);
|
||||
assert (!rii.failed());
|
||||
|
||||
ActiveObject::VoidIntType vi = activeObj.testVoid;
|
||||
ActiveResult<void> rvi = vi(123);
|
||||
assert (!rvi.available());
|
||||
activeObj.cont();
|
||||
rvi.wait();
|
||||
assert (rvi.available());
|
||||
assert (!rvi.failed());
|
||||
|
||||
ActiveObject::VoidVoidType vv = activeObj.testVoidInOut;
|
||||
ActiveResult<void> rvv = vv();
|
||||
assert (!rvv.available());
|
||||
activeObj.cont();
|
||||
rvv.wait();
|
||||
assert (rvv.available());
|
||||
assert (!rvv.failed());
|
||||
|
||||
ActiveObject::IntVoidType iv = activeObj.testVoidIn;
|
||||
ActiveResult<int> riv = iv();
|
||||
assert (!riv.available());
|
||||
activeObj.cont();
|
||||
riv.wait();
|
||||
assert (riv.available());
|
||||
assert (riv.data() == 123);
|
||||
assert (!riv.failed());
|
||||
}
|
||||
|
||||
|
||||
void ActiveMethodTest::testWaitInterval()
|
||||
{
|
||||
ActiveObject activeObj;
|
||||
@@ -226,6 +271,7 @@ CppUnit::Test* ActiveMethodTest::suite()
|
||||
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ActiveMethodTest");
|
||||
|
||||
CppUnit_addTest(pSuite, ActiveMethodTest, testWait);
|
||||
CppUnit_addTest(pSuite, ActiveMethodTest, testCopy);
|
||||
CppUnit_addTest(pSuite, ActiveMethodTest, testWaitInterval);
|
||||
CppUnit_addTest(pSuite, ActiveMethodTest, testTryWait);
|
||||
CppUnit_addTest(pSuite, ActiveMethodTest, testFailure);
|
||||
|
Reference in New Issue
Block a user