diff options
| author | Kevin Smith <git@kismith.co.uk> | 2010-04-12 09:50:20 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2010-04-12 12:07:45 (GMT) | 
| commit | 6dcca70b2f9ed13817e3600d96dbc9af3b597241 (patch) | |
| tree | 94a9083a787d83d0d2bf987d2135238177e177a8 | |
| parent | b4604f14389aa6276f6d2c3bff2a873b4dfe0913 (diff) | |
| download | swift-6dcca70b2f9ed13817e3600d96dbc9af3b597241.zip swift-6dcca70b2f9ed13817e3600d96dbc9af3b597241.tar.bz2 | |
RosterController testing.
| -rw-r--r-- | Swift/Controllers/UnitTest/RosterControllerTest.cpp | 36 | ||||
| -rw-r--r-- | Swiften/Roster/UnitTest/MockTreeWidget.h | 2 | ||||
| -rw-r--r-- | Swiften/Roster/UnitTest/MockTreeWidgetFactory.h | 24 | ||||
| -rw-r--r-- | Swiften/Roster/UnitTest/MockTreeWidgetItem.cpp | 19 | ||||
| -rw-r--r-- | Swiften/Roster/UnitTest/MockTreeWidgetItem.h | 8 | ||||
| -rw-r--r-- | Swiften/SConscript | 1 | 
6 files changed, 82 insertions, 8 deletions
| diff --git a/Swift/Controllers/UnitTest/RosterControllerTest.cpp b/Swift/Controllers/UnitTest/RosterControllerTest.cpp index e4d6775..1177bd7 100644 --- a/Swift/Controllers/UnitTest/RosterControllerTest.cpp +++ b/Swift/Controllers/UnitTest/RosterControllerTest.cpp @@ -29,6 +29,8 @@ class RosterControllerTest : public CppUnit::TestFixture  {  		CPPUNIT_TEST_SUITE(RosterControllerTest);  		CPPUNIT_TEST(testAdd); +		CPPUNIT_TEST(testAddSubscription); +		CPPUNIT_TEST(testRename);  		CPPUNIT_TEST_SUITE_END();  	public: @@ -55,7 +57,6 @@ class RosterControllerTest : public CppUnit::TestFixture  		void tearDown() {  			delete rosterController_;  			delete nickResolver_; -			delete treeWidgetFactory_;  			delete mainWindowFactory_;  			delete avatarManager_;  			delete channel_; @@ -64,6 +65,7 @@ class RosterControllerTest : public CppUnit::TestFixture  			delete presenceOracle_;  			delete stanzaChannel_;  			delete uiEventStream_; +			delete treeWidgetFactory_;  		};  		void testAdd() { @@ -76,6 +78,36 @@ class RosterControllerTest : public CppUnit::TestFixture  			//CPPUNIT_ASSERT_EQUAL(String("Bob"), xmppRoster_->getNameForJID(JID("foo@bar.com")));  		}; + 		void testAddSubscription() { +			std::vector<String> groups; +			JID jid("test@testdomain.com"); +			xmppRoster_->addContact(jid, "name", groups, RosterItemPayload::None); +			 +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroups().size()); +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroupMembers("Contacts").size()); +			xmppRoster_->addContact(jid, "name", groups, RosterItemPayload::To); +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroups().size()); +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroupMembers("Contacts").size()); + +			xmppRoster_->addContact(jid, "name", groups, RosterItemPayload::Both); +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroups().size()); +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroupMembers("Contacts").size()); + +		}; + +		void testRename() { +			std::vector<String> groups; +			JID jid("test@testdomain.com"); +			xmppRoster_->addContact(jid, "name", groups, RosterItemPayload::Both); +			 +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroups().size()); +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroupMembers("Contacts").size()); +			xmppRoster_->addContact(jid, "NewName", groups, RosterItemPayload::Both); +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroups().size()); +			CPPUNIT_ASSERT_EQUAL(1, (int)treeWidgetFactory_->getGroupMembers("Contacts").size()); +			CPPUNIT_ASSERT_EQUAL(String("NewName"), treeWidgetFactory_->getGroupMembers("Contacts")[0]->getText()); +		}; +  	private:  		JID jid_;  		boost::shared_ptr<XMPPRoster> xmppRoster_; @@ -91,3 +123,5 @@ class RosterControllerTest : public CppUnit::TestFixture  		EventController* eventController_;  		UIEventStream* uiEventStream_;  }; + +CPPUNIT_TEST_SUITE_REGISTRATION(RosterControllerTest); diff --git a/Swiften/Roster/UnitTest/MockTreeWidget.h b/Swiften/Roster/UnitTest/MockTreeWidget.h index b766aeb..97dd796 100644 --- a/Swiften/Roster/UnitTest/MockTreeWidget.h +++ b/Swiften/Roster/UnitTest/MockTreeWidget.h @@ -1,5 +1,5 @@  /* - * Copyright (c) 2010 Remko Tronçon + * Copyright (c) 2010 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information.   */ diff --git a/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h b/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h index 935423c..d94c859 100644 --- a/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h +++ b/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h @@ -1,5 +1,5 @@  /* - * Copyright (c) 2010 Remko Tronçon + * Copyright (c) 2010 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information.   */ @@ -27,12 +27,12 @@ class MockTreeWidgetFactory : public TreeWidgetFactory {  			return root_;  		};  		virtual TreeWidgetItem* createTreeWidgetItem(TreeWidgetItem* group) { -			MockTreeWidgetItem* entry = new MockTreeWidgetItem(); +			MockTreeWidgetItem* entry = new MockTreeWidgetItem(this);  			groupMembers_[group].push_back(entry);  			return entry;  		};  		virtual TreeWidgetItem* createTreeWidgetItem(TreeWidget*) { -			MockTreeWidgetItem* group = new MockTreeWidgetItem(); +			MockTreeWidgetItem* group = new MockTreeWidgetItem(this);  			groups_.push_back(group);  			return group;  		}; @@ -43,6 +43,24 @@ class MockTreeWidgetFactory : public TreeWidgetFactory {  			}  			return groupNames;  		}; + +		typedef std::map<TreeWidgetItem*, std::vector<MockTreeWidgetItem*> > itemMap; + +		virtual std::vector<MockTreeWidgetItem*> getGroupMembers(const String& group) { +			for (itemMap::iterator it = groupMembers_.begin(); it != groupMembers_.end(); it++) { +				if (((MockTreeWidgetItem*)(it->first))->getText() == group) { +					return it->second; +				} +			} +			return std::vector<MockTreeWidgetItem*>(); +		}; + +		virtual void removeItem(MockTreeWidgetItem* item) { +			foreach (TreeWidgetItem* groupItem, groups_) { +				std::vector<MockTreeWidgetItem*>& members = groupMembers_[groupItem]; +				members.erase(std::remove(members.begin(), members.end(), item), members.end()); +			} +		};  	private:  		std::vector<MockTreeWidgetItem*> groups_;  		std::map<TreeWidgetItem*, std::vector<MockTreeWidgetItem*> > groupMembers_; diff --git a/Swiften/Roster/UnitTest/MockTreeWidgetItem.cpp b/Swiften/Roster/UnitTest/MockTreeWidgetItem.cpp new file mode 100644 index 0000000..4238ead --- /dev/null +++ b/Swiften/Roster/UnitTest/MockTreeWidgetItem.cpp @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2010 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ +#include "Swiften/Roster/UnitTest/MockTreeWidgetItem.h" + +#include "Swiften/Roster/UnitTest/MockTreeWidgetFactory.h" + +namespace Swift { + +MockTreeWidgetItem::~MockTreeWidgetItem() { +	factory_->removeItem(this); +} + +} + + + diff --git a/Swiften/Roster/UnitTest/MockTreeWidgetItem.h b/Swiften/Roster/UnitTest/MockTreeWidgetItem.h index 1ec1441..08b9f1a 100644 --- a/Swiften/Roster/UnitTest/MockTreeWidgetItem.h +++ b/Swiften/Roster/UnitTest/MockTreeWidgetItem.h @@ -1,5 +1,5 @@  /* - * Copyright (c) 2010 Remko Tronçon + * Copyright (c) 2010 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information.   */ @@ -14,10 +14,11 @@  #include <boost/shared_ptr.hpp>  namespace Swift { - +	class MockTreeWidgetFactory;  class MockTreeWidgetItem : public TreeWidgetItem {  	public: -		virtual ~MockTreeWidgetItem() {}; +		MockTreeWidgetItem(MockTreeWidgetFactory* factory) {factory_ = factory;}; +		virtual ~MockTreeWidgetItem();  		virtual void setText(const String& text) {text_ = text;};  		String getText() {return text_;};  		virtual void setStatusText(const String&) {}; @@ -28,6 +29,7 @@ class MockTreeWidgetItem : public TreeWidgetItem {  		virtual void hide() {};  	private:  		String text_; +		MockTreeWidgetFactory* factory_;  };  } diff --git a/Swiften/SConscript b/Swiften/SConscript index 82c75d5..edc1885 100644 --- a/Swiften/SConscript +++ b/Swiften/SConscript @@ -189,6 +189,7 @@ if env["SCONS_STAGE"] == "build" :  			File("Roster/UnitTest/OfflineRosterFilterTest.cpp"),  			File("Roster/UnitTest/RosterTest.cpp"),  			File("Roster/UnitTest/XMPPRosterTest.cpp"), +			File("Roster/UnitTest/MockTreeWidgetItem.cpp"),  			File("SASL/UnitTest/PLAINMessageTest.cpp"),  			File("SASL/UnitTest/PLAINClientAuthenticatorTest.cpp"),  			File("SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp"), | 
 Swift
 Swift