diff options
Diffstat (limited to 'QA/Swiften/NetworkTest/BoostConnectionServerTest.cpp')
| -rw-r--r-- | QA/Swiften/NetworkTest/BoostConnectionServerTest.cpp | 72 | 
1 files changed, 72 insertions, 0 deletions
diff --git a/QA/Swiften/NetworkTest/BoostConnectionServerTest.cpp b/QA/Swiften/NetworkTest/BoostConnectionServerTest.cpp new file mode 100644 index 0000000..a5c51aa --- /dev/null +++ b/QA/Swiften/NetworkTest/BoostConnectionServerTest.cpp @@ -0,0 +1,72 @@ +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/extensions/TestFactoryRegistry.h> +#include <boost/shared_ptr.hpp> + +#include "Swiften/Base/String.h" +#include "Swiften/Network/BoostConnectionServer.h" +#include "Swiften/Network/BoostIOServiceThread.h" +#include "Swiften/EventLoop/DummyEventLoop.h" + +using namespace Swift; + +class BoostConnectionServerTest : public CppUnit::TestFixture { +		CPPUNIT_TEST_SUITE(BoostConnectionServerTest); +		CPPUNIT_TEST(testConstructor_TwoServersOnSamePort); +		CPPUNIT_TEST(testStart_Conflict); +		CPPUNIT_TEST(testStop); +		CPPUNIT_TEST_SUITE_END(); + +	public: +		void setUp() { +			boostIOServiceThread_ = new BoostIOServiceThread(); +			eventLoop_ = new DummyEventLoop(); +			stopped = false; +			stoppedError.reset(); +		} + +		void tearDown() { +			delete eventLoop_; +			delete boostIOServiceThread_; +		} + +		void testConstructor_TwoServersOnSamePort() { +			boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); +			boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); +		} + +		void testStart_Conflict() { +			boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); +			testling->start(); + +			boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); +			testling2->onStopped.connect( +					boost::bind(&BoostConnectionServerTest::handleStopped, this, _1)); + +			testling->stop(); +		} + +		void testStop() { +			boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); +			testling->start(); + +			testling->stop(); + +			boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); +			testling2->start(); + +			testling2->stop(); +		} + +		void handleStopped(boost::optional<BoostConnectionServer::Error> e) { +			stopped = true; +			stoppedError = e; +		} + +	private: +		BoostIOServiceThread* boostIOServiceThread_; +		DummyEventLoop* eventLoop_; +		bool stopped; +		boost::optional<BoostConnectionServer::Error> stoppedError; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(BoostConnectionServerTest);  | 
 Swift