diff options
Diffstat (limited to 'Swiften/StreamManagement/UnitTest')
-rw-r--r-- | Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp | 278 | ||||
-rw-r--r-- | Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp | 148 |
2 files changed, 213 insertions, 213 deletions
diff --git a/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp b/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp index 99713a9..55e6012 100644 --- a/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp +++ b/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp @@ -20,145 +20,145 @@ using namespace Swift; namespace Swift { class StanzaAckRequesterTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(StanzaAckRequesterTest); - CPPUNIT_TEST(testHandleStanzaSent_MessageRequestsAck); - CPPUNIT_TEST(testHandleStanzaSent_IQDoesNotRequestAck); - CPPUNIT_TEST(testHandleStanzaSent_PresenceDoesNotRequestAck); - CPPUNIT_TEST(testHandleAckReceived_AcksStanza); - CPPUNIT_TEST(testHandleAckReceived_AcksMultipleMessages); - CPPUNIT_TEST(testHandleAckReceived_AcksMultipleStanzas); - CPPUNIT_TEST(testHandleAckReceived_MultipleAcks); - CPPUNIT_TEST(testHandleAckReceived_WrapAround); - CPPUNIT_TEST_SUITE_END(); - - public: - void setUp() { - acksRequested = 0; - } - - void testHandleStanzaSent_MessageRequestsAck() { - boost::shared_ptr<StanzaAckRequester> testling(createRequester()); - testling->handleStanzaSent(createMessage("m1")); - - CPPUNIT_ASSERT_EQUAL(1, acksRequested); - } - - void testHandleStanzaSent_IQDoesNotRequestAck() { - boost::shared_ptr<StanzaAckRequester> testling(createRequester()); - testling->handleStanzaSent(createIQ("iq1")); - - CPPUNIT_ASSERT_EQUAL(0, acksRequested); - } - - void testHandleStanzaSent_PresenceDoesNotRequestAck() { - boost::shared_ptr<StanzaAckRequester> testling(createRequester()); - testling->handleStanzaSent(createPresence("p1")); - - CPPUNIT_ASSERT_EQUAL(0, acksRequested); - } - - void testHandleAckReceived_AcksStanza() { - boost::shared_ptr<StanzaAckRequester> testling(createRequester()); - testling->handleStanzaSent(createMessage("m1")); - - testling->handleAckReceived(1); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(ackedStanzas.size())); - CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[0]->getID()); - } - - void testHandleAckReceived_AcksMultipleMessages() { - boost::shared_ptr<StanzaAckRequester> testling(createRequester()); - testling->handleStanzaSent(createMessage("m1")); - testling->handleStanzaSent(createMessage("m2")); - - testling->handleAckReceived(2); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(ackedStanzas.size())); - CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[0]->getID()); - CPPUNIT_ASSERT_EQUAL(std::string("m2"), ackedStanzas[1]->getID()); - } - - void testHandleAckReceived_AcksMultipleStanzas() { - boost::shared_ptr<StanzaAckRequester> testling(createRequester()); - testling->handleStanzaSent(createIQ("iq1")); - testling->handleStanzaSent(createPresence("p1")); - testling->handleStanzaSent(createMessage("m1")); - - testling->handleAckReceived(3); - - CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(ackedStanzas.size())); - CPPUNIT_ASSERT_EQUAL(std::string("iq1"), ackedStanzas[0]->getID()); - CPPUNIT_ASSERT_EQUAL(std::string("p1"), ackedStanzas[1]->getID()); - CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[2]->getID()); - } - - void testHandleAckReceived_MultipleAcks() { - boost::shared_ptr<StanzaAckRequester> testling(createRequester()); - testling->handleStanzaSent(createMessage("m1")); - testling->handleAckReceived(1); - - testling->handleStanzaSent(createMessage("m2")); - testling->handleStanzaSent(createMessage("m3")); - testling->handleAckReceived(3); - - CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(ackedStanzas.size())); - CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[0]->getID()); - CPPUNIT_ASSERT_EQUAL(std::string("m2"), ackedStanzas[1]->getID()); - CPPUNIT_ASSERT_EQUAL(std::string("m3"), ackedStanzas[2]->getID()); - } - - // Handle stanza ack count wrapping, as per the XEP - void testHandleAckReceived_WrapAround() { - boost::shared_ptr<StanzaAckRequester> testling(createRequester()); - testling->lastHandledStanzasCount = boost::numeric_cast<unsigned int>((1ULL<<32) - 1); - testling->handleStanzaSent(createMessage("m1")); - testling->handleStanzaSent(createMessage("m2")); - - testling->handleAckReceived(1); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(ackedStanzas.size())); - CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[0]->getID()); - CPPUNIT_ASSERT_EQUAL(std::string("m2"), ackedStanzas[1]->getID()); - } - - private: - Message::ref createMessage(const std::string& id) { - Message::ref result(new Message()); - result->setID(id); - return result; - } - - IQ::ref createIQ(const std::string& id) { - IQ::ref result(new IQ()); - result->setID(id); - return result; - } - - Presence::ref createPresence(const std::string& id) { - Presence::ref result(new Presence()); - result->setID(id); - return result; - } - - StanzaAckRequester* createRequester() { - StanzaAckRequester* requester = new StanzaAckRequester(); - requester->onRequestAck.connect(boost::bind(&StanzaAckRequesterTest::handleRequestAck, this)); - requester->onStanzaAcked.connect(boost::bind(&StanzaAckRequesterTest::handleStanzaAcked, this, _1)); - return requester; - } - - void handleRequestAck() { - acksRequested++; - } - - void handleStanzaAcked(boost::shared_ptr<Stanza> stanza) { - ackedStanzas.push_back(stanza); - } - - private: - int acksRequested; - std::vector< boost::shared_ptr<Stanza> > ackedStanzas; + CPPUNIT_TEST_SUITE(StanzaAckRequesterTest); + CPPUNIT_TEST(testHandleStanzaSent_MessageRequestsAck); + CPPUNIT_TEST(testHandleStanzaSent_IQDoesNotRequestAck); + CPPUNIT_TEST(testHandleStanzaSent_PresenceDoesNotRequestAck); + CPPUNIT_TEST(testHandleAckReceived_AcksStanza); + CPPUNIT_TEST(testHandleAckReceived_AcksMultipleMessages); + CPPUNIT_TEST(testHandleAckReceived_AcksMultipleStanzas); + CPPUNIT_TEST(testHandleAckReceived_MultipleAcks); + CPPUNIT_TEST(testHandleAckReceived_WrapAround); + CPPUNIT_TEST_SUITE_END(); + + public: + void setUp() { + acksRequested = 0; + } + + void testHandleStanzaSent_MessageRequestsAck() { + boost::shared_ptr<StanzaAckRequester> testling(createRequester()); + testling->handleStanzaSent(createMessage("m1")); + + CPPUNIT_ASSERT_EQUAL(1, acksRequested); + } + + void testHandleStanzaSent_IQDoesNotRequestAck() { + boost::shared_ptr<StanzaAckRequester> testling(createRequester()); + testling->handleStanzaSent(createIQ("iq1")); + + CPPUNIT_ASSERT_EQUAL(0, acksRequested); + } + + void testHandleStanzaSent_PresenceDoesNotRequestAck() { + boost::shared_ptr<StanzaAckRequester> testling(createRequester()); + testling->handleStanzaSent(createPresence("p1")); + + CPPUNIT_ASSERT_EQUAL(0, acksRequested); + } + + void testHandleAckReceived_AcksStanza() { + boost::shared_ptr<StanzaAckRequester> testling(createRequester()); + testling->handleStanzaSent(createMessage("m1")); + + testling->handleAckReceived(1); + + CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(ackedStanzas.size())); + CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[0]->getID()); + } + + void testHandleAckReceived_AcksMultipleMessages() { + boost::shared_ptr<StanzaAckRequester> testling(createRequester()); + testling->handleStanzaSent(createMessage("m1")); + testling->handleStanzaSent(createMessage("m2")); + + testling->handleAckReceived(2); + + CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(ackedStanzas.size())); + CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[0]->getID()); + CPPUNIT_ASSERT_EQUAL(std::string("m2"), ackedStanzas[1]->getID()); + } + + void testHandleAckReceived_AcksMultipleStanzas() { + boost::shared_ptr<StanzaAckRequester> testling(createRequester()); + testling->handleStanzaSent(createIQ("iq1")); + testling->handleStanzaSent(createPresence("p1")); + testling->handleStanzaSent(createMessage("m1")); + + testling->handleAckReceived(3); + + CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(ackedStanzas.size())); + CPPUNIT_ASSERT_EQUAL(std::string("iq1"), ackedStanzas[0]->getID()); + CPPUNIT_ASSERT_EQUAL(std::string("p1"), ackedStanzas[1]->getID()); + CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[2]->getID()); + } + + void testHandleAckReceived_MultipleAcks() { + boost::shared_ptr<StanzaAckRequester> testling(createRequester()); + testling->handleStanzaSent(createMessage("m1")); + testling->handleAckReceived(1); + + testling->handleStanzaSent(createMessage("m2")); + testling->handleStanzaSent(createMessage("m3")); + testling->handleAckReceived(3); + + CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(ackedStanzas.size())); + CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[0]->getID()); + CPPUNIT_ASSERT_EQUAL(std::string("m2"), ackedStanzas[1]->getID()); + CPPUNIT_ASSERT_EQUAL(std::string("m3"), ackedStanzas[2]->getID()); + } + + // Handle stanza ack count wrapping, as per the XEP + void testHandleAckReceived_WrapAround() { + boost::shared_ptr<StanzaAckRequester> testling(createRequester()); + testling->lastHandledStanzasCount = boost::numeric_cast<unsigned int>((1ULL<<32) - 1); + testling->handleStanzaSent(createMessage("m1")); + testling->handleStanzaSent(createMessage("m2")); + + testling->handleAckReceived(1); + + CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(ackedStanzas.size())); + CPPUNIT_ASSERT_EQUAL(std::string("m1"), ackedStanzas[0]->getID()); + CPPUNIT_ASSERT_EQUAL(std::string("m2"), ackedStanzas[1]->getID()); + } + + private: + Message::ref createMessage(const std::string& id) { + Message::ref result(new Message()); + result->setID(id); + return result; + } + + IQ::ref createIQ(const std::string& id) { + IQ::ref result(new IQ()); + result->setID(id); + return result; + } + + Presence::ref createPresence(const std::string& id) { + Presence::ref result(new Presence()); + result->setID(id); + return result; + } + + StanzaAckRequester* createRequester() { + StanzaAckRequester* requester = new StanzaAckRequester(); + requester->onRequestAck.connect(boost::bind(&StanzaAckRequesterTest::handleRequestAck, this)); + requester->onStanzaAcked.connect(boost::bind(&StanzaAckRequesterTest::handleStanzaAcked, this, _1)); + return requester; + } + + void handleRequestAck() { + acksRequested++; + } + + void handleStanzaAcked(boost::shared_ptr<Stanza> stanza) { + ackedStanzas.push_back(stanza); + } + + private: + int acksRequested; + std::vector< boost::shared_ptr<Stanza> > ackedStanzas; }; } diff --git a/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp b/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp index 11d1c57..70cd8fc 100644 --- a/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp +++ b/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp @@ -18,80 +18,80 @@ using namespace Swift; namespace Swift { class StanzaAckResponderTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(StanzaAckResponderTest); - CPPUNIT_TEST(testHandleAckRequestReceived_AcksStanza); - CPPUNIT_TEST(testHandleAckRequestReceived_AcksMultipleStanzas); - CPPUNIT_TEST(testHandleAckRequestReceived_MultipleAcks); - CPPUNIT_TEST(testHandleAckRequestReceived_WrapAround); - CPPUNIT_TEST_SUITE_END(); - - public: - void testHandleAckRequestReceived_AcksStanza() { - boost::shared_ptr<StanzaAckResponder> testling(createResponder()); - testling->handleStanzaReceived(); - - testling->handleAckRequestReceived(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(acks.size())); - CPPUNIT_ASSERT_EQUAL(1U, acks[0]); - } - - void testHandleAckRequestReceived_AcksMultipleStanzas() { - boost::shared_ptr<StanzaAckResponder> testling(createResponder()); - testling->handleStanzaReceived(); - testling->handleStanzaReceived(); - - testling->handleAckRequestReceived(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(acks.size())); - CPPUNIT_ASSERT_EQUAL(2U, acks[0]); - } - - void testHandleAckRequestReceived_MultipleAcks() { - boost::shared_ptr<StanzaAckResponder> testling(createResponder()); - testling->handleStanzaReceived(); - testling->handleAckRequestReceived(); - - testling->handleStanzaReceived(); - testling->handleAckRequestReceived(); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(acks.size())); - CPPUNIT_ASSERT_EQUAL(1U, acks[0]); - CPPUNIT_ASSERT_EQUAL(2U, acks[1]); - } - - // Handle stanza ack count wrapping, as per the XEP - void testHandleAckRequestReceived_WrapAround() { - boost::shared_ptr<StanzaAckResponder> testling(createResponder()); - testling->handledStanzasCount = boost::numeric_cast<unsigned int>((1ULL<<32) - 1); - testling->handleStanzaReceived(); - testling->handleStanzaReceived(); - - testling->handleAckRequestReceived(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(acks.size())); - CPPUNIT_ASSERT_EQUAL(1U, acks[0]); - } - - private: - Message::ref createMessage(const std::string& id) { - Message::ref result(new Message()); - result->setID(id); - return result; - } - - StanzaAckResponder* createResponder() { - StanzaAckResponder* responder = new StanzaAckResponder(); - responder->onAck.connect(boost::bind(&StanzaAckResponderTest::handleAck, this, _1)); - return responder; - } - - void handleAck(unsigned int h) { - acks.push_back(h); - } - - private: - std::vector<unsigned int> acks; + CPPUNIT_TEST_SUITE(StanzaAckResponderTest); + CPPUNIT_TEST(testHandleAckRequestReceived_AcksStanza); + CPPUNIT_TEST(testHandleAckRequestReceived_AcksMultipleStanzas); + CPPUNIT_TEST(testHandleAckRequestReceived_MultipleAcks); + CPPUNIT_TEST(testHandleAckRequestReceived_WrapAround); + CPPUNIT_TEST_SUITE_END(); + + public: + void testHandleAckRequestReceived_AcksStanza() { + boost::shared_ptr<StanzaAckResponder> testling(createResponder()); + testling->handleStanzaReceived(); + + testling->handleAckRequestReceived(); + + CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(acks.size())); + CPPUNIT_ASSERT_EQUAL(1U, acks[0]); + } + + void testHandleAckRequestReceived_AcksMultipleStanzas() { + boost::shared_ptr<StanzaAckResponder> testling(createResponder()); + testling->handleStanzaReceived(); + testling->handleStanzaReceived(); + + testling->handleAckRequestReceived(); + + CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(acks.size())); + CPPUNIT_ASSERT_EQUAL(2U, acks[0]); + } + + void testHandleAckRequestReceived_MultipleAcks() { + boost::shared_ptr<StanzaAckResponder> testling(createResponder()); + testling->handleStanzaReceived(); + testling->handleAckRequestReceived(); + + testling->handleStanzaReceived(); + testling->handleAckRequestReceived(); + + CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(acks.size())); + CPPUNIT_ASSERT_EQUAL(1U, acks[0]); + CPPUNIT_ASSERT_EQUAL(2U, acks[1]); + } + + // Handle stanza ack count wrapping, as per the XEP + void testHandleAckRequestReceived_WrapAround() { + boost::shared_ptr<StanzaAckResponder> testling(createResponder()); + testling->handledStanzasCount = boost::numeric_cast<unsigned int>((1ULL<<32) - 1); + testling->handleStanzaReceived(); + testling->handleStanzaReceived(); + + testling->handleAckRequestReceived(); + + CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(acks.size())); + CPPUNIT_ASSERT_EQUAL(1U, acks[0]); + } + + private: + Message::ref createMessage(const std::string& id) { + Message::ref result(new Message()); + result->setID(id); + return result; + } + + StanzaAckResponder* createResponder() { + StanzaAckResponder* responder = new StanzaAckResponder(); + responder->onAck.connect(boost::bind(&StanzaAckResponderTest::handleAck, this, _1)); + return responder; + } + + void handleAck(unsigned int h) { + acks.push_back(h); + } + + private: + std::vector<unsigned int> acks; }; } |