From 06674e57649d536cf19715524ee40c5ad4a9026d Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Sat, 1 Sep 2012 00:12:35 -0700 Subject: Adding async operations; first step towards tossing libeio out. --- tests/test-Async.cc | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 tests/test-Async.cc (limited to 'tests') diff --git a/tests/test-Async.cc b/tests/test-Async.cc new file mode 100644 index 0000000..5f93217 --- /dev/null +++ b/tests/test-Async.cc @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +using namespace Balau; + +class AsyncOpTest : public AsyncOperation { + public: + AsyncOpTest(Events::Custom * evt) : m_evt(evt) { } + virtual void run() { + Printer::log(M_STATUS, "Async operation running"); + TAssert(!m_ran); + TAssert(!m_finished); + TAssert(!m_done); + m_ran = true; + } + virtual void finish() { + Printer::log(M_STATUS, "Async operation finishing"); + TAssert(m_ran); + TAssert(!m_finished); + TAssert(!m_done); + m_finished = true; + } + virtual void done() { + Printer::log(M_STATUS, "Async operation done"); + TAssert(m_ran); + TAssert(m_finished); + TAssert(!m_done); + m_done = true; + m_evt->doSignal(); + } + virtual bool needsFinishWorker() { return true; } + + bool m_ran = false; + bool m_finished = false; + bool m_done = false; + Events::Custom * m_evt; +}; + +void MainTask::Do() { + Printer::log(M_STATUS, "Test::Async running."); + + Events::Custom evt; + AsyncOpTest * op = createAsyncOp(new AsyncOpTest(&evt)); + waitFor(&evt); + TAssert(!evt.gotSignal()); + yield(); + TAssert(evt.gotSignal()); + TAssert(op->m_ran); + TAssert(op->m_finished); + TAssert(op->m_done); + delete op; + + Printer::log(M_STATUS, "Test::Async passed."); +} -- cgit v1.2.3