diff options
| author | Remko Tronçon <git@el-tramo.be> | 2009-06-01 08:48:42 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2009-06-01 09:24:28 (GMT) | 
| commit | 2812bddd81f8a1b804c7460f4e14cd0aa393d129 (patch) | |
| tree | d46294f35150c4f0f43deaf2d31fceaf945ae715 /Swiften/EventLoop/UnitTest/EventLoopTest.cpp | |
| download | swift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.zip swift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.tar.bz2  | |
Import.
Diffstat (limited to 'Swiften/EventLoop/UnitTest/EventLoopTest.cpp')
| -rw-r--r-- | Swiften/EventLoop/UnitTest/EventLoopTest.cpp | 63 | 
1 files changed, 63 insertions, 0 deletions
diff --git a/Swiften/EventLoop/UnitTest/EventLoopTest.cpp b/Swiften/EventLoop/UnitTest/EventLoopTest.cpp new file mode 100644 index 0000000..c64d1ad --- /dev/null +++ b/Swiften/EventLoop/UnitTest/EventLoopTest.cpp @@ -0,0 +1,63 @@ +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/extensions/TestFactoryRegistry.h> +#include <boost/thread.hpp> +#include <boost/bind.hpp> + +#include "Swiften/EventLoop/SimpleEventLoop.h" +#include "Swiften/Base/sleep.h" + +using namespace Swift; + +class EventLoopTest : public CppUnit::TestFixture +{ +		CPPUNIT_TEST_SUITE(EventLoopTest); +		CPPUNIT_TEST(testPost); +		CPPUNIT_TEST(testRemove); +		CPPUNIT_TEST_SUITE_END(); + +	public: +		EventLoopTest() {} + +		void setUp() { +			events_.clear(); +		} + +		void testPost() { +			SimpleEventLoop testling; + +			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1), 0); +			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2), 0); +			testling.stop(); +			testling.run(); + +			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(events_.size())); +			CPPUNIT_ASSERT_EQUAL(1, events_[0]); +			CPPUNIT_ASSERT_EQUAL(2, events_[1]); +		} + +		void testRemove() { +			SimpleEventLoop testling; + +			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1), &testling); +			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2), this); +			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 3), &testling); +			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 4), this); +			testling.removeEventsFromOwner(this); +			testling.stop(); +			testling.run(); + +			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(events_.size())); +			CPPUNIT_ASSERT_EQUAL(1, events_[0]); +			CPPUNIT_ASSERT_EQUAL(3, events_[1]); +		} +	 +	private: +		void logEvent(int i) { +			events_.push_back(i); +		} + +	private: +		std::vector<int> events_; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(EventLoopTest);  | 
 Swift