diff options
| author | Kevin Smith <git@kismith.co.uk> | 2009-10-25 22:56:43 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2009-10-25 22:56:43 (GMT) | 
| commit | 3acf1a8f4cc5a221566de1d3a037f1b19953665b (patch) | |
| tree | 8d89b9ffa08baa2ccee9c0480811a7571c10747e | |
| parent | 22b51f8f82f6bd3186339b05943c1e19aa71050f (diff) | |
| download | swift-3acf1a8f4cc5a221566de1d3a037f1b19953665b.zip swift-3acf1a8f4cc5a221566de1d3a037f1b19953665b.tar.bz2 | |
Starting to unit test PresenceOracle.
| -rw-r--r-- | Swiften/Client/DummyStanzaChannel.h | 4 | ||||
| -rw-r--r-- | Swiften/Presence/UnitTest/PresenceOracleTest.cpp | 98 | ||||
| -rw-r--r-- | Swiften/SConscript | 1 | 
3 files changed, 103 insertions, 0 deletions
| diff --git a/Swiften/Client/DummyStanzaChannel.h b/Swiften/Client/DummyStanzaChannel.h index 211a4ab..052c470 100644 --- a/Swiften/Client/DummyStanzaChannel.h +++ b/Swiften/Client/DummyStanzaChannel.h @@ -28,6 +28,10 @@ namespace Swift {  			virtual String getNewIQID() {  				return "test-id";  			} +			 +			virtual bool isAvailable() { +				return true; +			}  			std::vector<boost::shared_ptr<Stanza> > sentStanzas_;  	}; diff --git a/Swiften/Presence/UnitTest/PresenceOracleTest.cpp b/Swiften/Presence/UnitTest/PresenceOracleTest.cpp new file mode 100644 index 0000000..e6f56b2 --- /dev/null +++ b/Swiften/Presence/UnitTest/PresenceOracleTest.cpp @@ -0,0 +1,98 @@ +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/extensions/TestFactoryRegistry.h> +#include <boost/bind.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/optional.hpp> + +#include "Swiften/Presence/PresenceOracle.h" +#include "Swiften/Client/DummyStanzaChannel.h" + +using namespace Swift; + +class PresencePointerPair { +	public: +		boost::shared_ptr<Presence> one; +		boost::shared_ptr<Presence> two; +}; + +class PresenceOracleTest : public CppUnit::TestFixture +{ +		CPPUNIT_TEST_SUITE(PresenceOracleTest); +		CPPUNIT_TEST(testFirstPresence); +		CPPUNIT_TEST(testSecondPresence); +		CPPUNIT_TEST_SUITE_END(); + +	private: +		PresenceOracle* oracle_; +		DummyStanzaChannel* stanzaChannel_; + +	public: + +		void handlePresenceChange(boost::shared_ptr<Presence> newPresence, boost::shared_ptr<Presence> lastPresence, PresencePointerPair* out) { +			CPPUNIT_ASSERT(out->one.get() == NULL); +			CPPUNIT_ASSERT(out->two.get() == NULL); +			out->one = newPresence; +			out->two = lastPresence; +			CPPUNIT_ASSERT(newPresence.get()); +			CPPUNIT_ASSERT_EQUAL(newPresence, out->one); +		} +		 +		void handlePresenceSubscriptionRequest(const JID& jid, const String& reason, boost::optional<JID>& outJID, boost::optional<String>& outReason) { +			CPPUNIT_ASSERT(!outJID); +			CPPUNIT_ASSERT(!outReason); +			outJID = jid; +			outReason = reason; +		} + +		void setUp() { +			stanzaChannel_ = new DummyStanzaChannel(); +			oracle_ = new PresenceOracle(stanzaChannel_); +		} + +		void tearDown() { +			delete oracle_; +			delete stanzaChannel_; +		} + +		void testFirstPresence() { +			PresencePointerPair out; +			oracle_->onPresenceChange.connect(boost::bind(&PresenceOracleTest::handlePresenceChange, this, _1, _2, &out)); + +			boost::optional<JID> jid; +			boost::optional<String> reason; +			oracle_->onPresenceSubscriptionRequest.connect(boost::bind(&PresenceOracleTest::handlePresenceSubscriptionRequest, this, _1, _2, jid, reason)); + +			boost::shared_ptr<Presence> sentPresence(new Presence("blarb")); +			stanzaChannel_->onPresenceReceived(sentPresence); + +			CPPUNIT_ASSERT(!jid); +			CPPUNIT_ASSERT(!reason); +			CPPUNIT_ASSERT(out.two.get() == NULL); +			CPPUNIT_ASSERT_EQUAL(sentPresence, out.one); +		} +		 +		void testSecondPresence() { +			PresencePointerPair out; +			oracle_->onPresenceChange.connect(boost::bind(&PresenceOracleTest::handlePresenceChange, this, _1, _2, &out)); + +			boost::shared_ptr<Presence> sentPresence1(new Presence("blarb")); +			stanzaChannel_->onPresenceReceived(sentPresence1); +			CPPUNIT_ASSERT_EQUAL(sentPresence1, out.one); +			out.one = boost::shared_ptr<Presence>(); +			 +			boost::optional<JID> jid; +			boost::optional<String> reason; +			oracle_->onPresenceSubscriptionRequest.connect(boost::bind(&PresenceOracleTest::handlePresenceSubscriptionRequest, this, _1, _2, jid, reason)); + +			boost::shared_ptr<Presence> sentPresence2(new Presence("test2")); +			stanzaChannel_->onPresenceReceived(sentPresence2); + +			CPPUNIT_ASSERT(!jid); +			CPPUNIT_ASSERT(!reason); +			CPPUNIT_ASSERT_EQUAL(sentPresence1, out.two); +			CPPUNIT_ASSERT_EQUAL(sentPresence2, out.one); +		} + +}; +CPPUNIT_TEST_SUITE_REGISTRATION(PresenceOracleTest); + diff --git a/Swiften/SConscript b/Swiften/SConscript index 28af98d..86c2a81 100644 --- a/Swiften/SConscript +++ b/Swiften/SConscript @@ -144,6 +144,7 @@ env.Append(UNITTEST_SOURCES = [  		File("Parser/UnitTest/StreamFeaturesParserTest.cpp"),  		File("Parser/UnitTest/XMLParserTest.cpp"),  		File("Parser/UnitTest/XMPPParserTest.cpp"), +		File("Presence/UnitTest/PresenceOracleTest.cpp"),  		File("Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp"),  		File("Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp"),  		File("Queries/UnitTest/IQRouterTest.cpp"), | 
 Swift
 Swift