summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swift/Controllers/UnitTest/RosterControllerTest.cpp36
-rw-r--r--Swiften/Roster/UnitTest/MockTreeWidget.h2
-rw-r--r--Swiften/Roster/UnitTest/MockTreeWidgetFactory.h24
-rw-r--r--Swiften/Roster/UnitTest/MockTreeWidgetItem.cpp19
-rw-r--r--Swiften/Roster/UnitTest/MockTreeWidgetItem.h8
-rw-r--r--Swiften/SConscript1
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"),