diff options
Diffstat (limited to 'Swift/Controllers/Roster/UnitTest')
| -rw-r--r-- | Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp b/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp index c396e48..9320af1 100644 --- a/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp +++ b/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp | |||
| @@ -1,8 +1,7 @@ | |||
| 1 | |||
| 2 | /* | 1 | /* |
| 3 | * Copyright (c) 2010 Isode Limited. | 2 | * Copyright (c) 2010-2015 Isode Limited. |
| 4 | * All rights reserved. | 3 | * All rights reserved. |
| 5 | * See the COPYING file for more information. | 4 | * See the COPYING file for more information. |
| 6 | */ | 5 | */ |
| 7 | 6 | ||
| 8 | #include <cppunit/extensions/HelperMacros.h> | 7 | #include <cppunit/extensions/HelperMacros.h> |
| @@ -26,15 +25,14 @@ | |||
| 26 | #include <Swiften/Presence/PresenceOracle.h> | 25 | #include <Swiften/Presence/PresenceOracle.h> |
| 27 | #include <Swiften/Presence/SubscriptionManager.h> | 26 | #include <Swiften/Presence/SubscriptionManager.h> |
| 28 | #include <Swiften/Queries/DummyIQChannel.h> | 27 | #include <Swiften/Queries/DummyIQChannel.h> |
| 29 | #include <Swiften/Queries/IQRouter.h> | 28 | #include <Swiften/Queries/IQRouter.h> |
| 30 | #include <Swiften/Roster/XMPPRosterImpl.h> | 29 | #include <Swiften/Roster/XMPPRosterImpl.h> |
| 30 | #include <Swiften/VCards/VCardManager.h> | ||
| 31 | #include <Swiften/VCards/VCardMemoryStorage.h> | 31 | #include <Swiften/VCards/VCardMemoryStorage.h> |
| 32 | // #include <Swiften/Elements/Payload.h> | ||
| 33 | // #include <Swiften/Elements/RosterItemPayload.h> | ||
| 34 | // #include <Swiften/Elements/RosterPayload.h> | ||
| 35 | 32 | ||
| 33 | #include <Swift/Controllers/FileTransfer/FileTransferOverview.h> | ||
| 36 | #include <Swift/Controllers/Roster/ContactRosterItem.h> | 34 | #include <Swift/Controllers/Roster/ContactRosterItem.h> |
| 37 | #include <Swift/Controllers/Roster/GroupRosterItem.h> | 35 | #include <Swift/Controllers/Roster/GroupRosterItem.h> |
| 38 | #include <Swift/Controllers/Roster/Roster.h> | 36 | #include <Swift/Controllers/Roster/Roster.h> |
| 39 | #include <Swift/Controllers/Roster/RosterController.h> | 37 | #include <Swift/Controllers/Roster/RosterController.h> |
| 40 | #include <Swift/Controllers/Settings/DummySettingsProvider.h> | 38 | #include <Swift/Controllers/Settings/DummySettingsProvider.h> |
| @@ -60,10 +58,11 @@ class RosterControllerTest : public CppUnit::TestFixture { | |||
| 60 | CPPUNIT_TEST(testSendRename); | 58 | CPPUNIT_TEST(testSendRename); |
| 61 | CPPUNIT_TEST(testPresence); | 59 | CPPUNIT_TEST(testPresence); |
| 62 | CPPUNIT_TEST(testHighestPresence); | 60 | CPPUNIT_TEST(testHighestPresence); |
| 63 | CPPUNIT_TEST(testNotHighestPresence); | 61 | CPPUNIT_TEST(testNotHighestPresence); |
| 64 | CPPUNIT_TEST(testUnavailablePresence); | 62 | CPPUNIT_TEST(testUnavailablePresence); |
| 63 | CPPUNIT_TEST(testRemoveResultsInUnavailablePresence); | ||
| 65 | CPPUNIT_TEST_SUITE_END(); | 64 | CPPUNIT_TEST_SUITE_END(); |
| 66 | 65 | ||
| 67 | public: | 66 | public: |
| 68 | void setUp() { | 67 | void setUp() { |
| 69 | jid_ = JID("testjid@swift.im/swift"); | 68 | jid_ = JID("testjid@swift.im/swift"); |
| @@ -73,11 +72,11 @@ class RosterControllerTest : public CppUnit::TestFixture { | |||
| 73 | mucRegistry_ = new MUCRegistry(); | 72 | mucRegistry_ = new MUCRegistry(); |
| 74 | nickResolver_ = new NickResolver(jid_.toBare(), xmppRoster_, NULL, mucRegistry_); | 73 | nickResolver_ = new NickResolver(jid_.toBare(), xmppRoster_, NULL, mucRegistry_); |
| 75 | channel_ = new DummyIQChannel(); | 74 | channel_ = new DummyIQChannel(); |
| 76 | router_ = new IQRouter(channel_); | 75 | router_ = new IQRouter(channel_); |
| 77 | stanzaChannel_ = new DummyStanzaChannel(); | 76 | stanzaChannel_ = new DummyStanzaChannel(); |
| 78 | presenceOracle_ = new PresenceOracle(stanzaChannel_); | 77 | presenceOracle_ = new PresenceOracle(stanzaChannel_, xmppRoster_); |
| 79 | subscriptionManager_ = new SubscriptionManager(stanzaChannel_); | 78 | subscriptionManager_ = new SubscriptionManager(stanzaChannel_); |
| 80 | eventController_ = new EventController(); | 79 | eventController_ = new EventController(); |
| 81 | uiEventStream_ = new UIEventStream(); | 80 | uiEventStream_ = new UIEventStream(); |
| 82 | settings_ = new DummySettingsProvider(); | 81 | settings_ = new DummySettingsProvider(); |
| 83 | nickManager_ = new DummyNickManager(); | 82 | nickManager_ = new DummyNickManager(); |
| @@ -317,10 +316,33 @@ class RosterControllerTest : public CppUnit::TestFixture { | |||
| 317 | 316 | ||
| 318 | CPPUNIT_ASSERT_EQUAL(groups.size(), item.getGroups().size()); | 317 | CPPUNIT_ASSERT_EQUAL(groups.size(), item.getGroups().size()); |
| 319 | assertVectorsEqual(groups, item.getGroups(), __LINE__); | 318 | assertVectorsEqual(groups, item.getGroups(), __LINE__); |
| 320 | } | 319 | } |
| 321 | 320 | ||
| 321 | void testRemoveResultsInUnavailablePresence() { | ||
| 322 | std::vector<std::string> groups; | ||
| 323 | groups.push_back("testGroup1"); | ||
| 324 | JID from("test@testdomain.com"); | ||
| 325 | xmppRoster_->addContact(from, "name", groups, RosterItemPayload::Both); | ||
| 326 | Presence::ref lowPresence(new Presence()); | ||
| 327 | lowPresence->setFrom(withResource(from, "bob")); | ||
| 328 | lowPresence->setPriority(2); | ||
| 329 | lowPresence->setStatus("Not here"); | ||
| 330 | Presence::ref highPresence(new Presence()); | ||
| 331 | highPresence->setFrom(withResource(from, "bert")); | ||
| 332 | highPresence->setPriority(10); | ||
| 333 | highPresence->setStatus("So totally here"); | ||
| 334 | stanzaChannel_->onPresenceReceived(highPresence); | ||
| 335 | stanzaChannel_->onPresenceReceived(lowPresence); | ||
| 336 | |||
| 337 | CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), presenceOracle_->getAllPresence("test@testdomain.com").size()); | ||
| 338 | |||
| 339 | xmppRoster_->onJIDRemoved(JID("test@testdomain.com")); | ||
| 340 | CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), presenceOracle_->getAllPresence("test@testdomain.com").size()); | ||
| 341 | CPPUNIT_ASSERT_EQUAL(Presence::Unavailable, presenceOracle_->getAllPresence("test@testdomain.com")[0]->getType()); | ||
| 342 | } | ||
| 343 | |||
| 322 | void assertVectorsEqual(const std::vector<std::string>& v1, const std::vector<std::string>& v2, int line) { | 344 | void assertVectorsEqual(const std::vector<std::string>& v1, const std::vector<std::string>& v2, int line) { |
| 323 | foreach (const std::string& entry, v1) { | 345 | foreach (const std::string& entry, v1) { |
| 324 | if (std::find(v2.begin(), v2.end(), entry) == v2.end()) { | 346 | if (std::find(v2.begin(), v2.end(), entry) == v2.end()) { |
| 325 | std::stringstream stream; | 347 | std::stringstream stream; |
| 326 | stream << "Couldn't find " << entry << " in v2 (line " << line << ")"; | 348 | stream << "Couldn't find " << entry << " in v2 (line " << line << ")"; |
Swift