diff options
author | dknn <yoann.blein@free.fr> | 2012-07-07 10:08:42 (GMT) |
---|---|---|
committer | dknn <yoann.blein@free.fr> | 2012-09-22 08:55:56 (GMT) |
commit | 62f54e12354e208c8931e069fce235c4ca14d205 (patch) | |
tree | 87e4c16fd4362b0edf2ab3345c64fe28454e8776 /Swiften/Parser/PayloadParsers/UnitTest | |
parent | 96d693d51973bd5b2ed47755c8726dc2076f6c53 (diff) | |
download | swift-contrib-62f54e12354e208c8931e069fce235c4ca14d205.zip swift-contrib-62f54e12354e208c8931e069fce235c4ca14d205.tar.bz2 |
Add raw UDP transport payload: element, serializer, parser and tests
Diffstat (limited to 'Swiften/Parser/PayloadParsers/UnitTest')
-rw-r--r-- | Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp | 75 |
1 files changed, 74 insertions, 1 deletions
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp index 18f38b2..2dd301f 100644 --- a/Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp +++ b/Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp @@ -15,8 +15,8 @@ #include <Swiften/Elements/StreamInitiationFileInfo.h> #include <Swiften/Elements/JingleFileTransferReceived.h> #include <Swiften/Elements/JingleFileTransferHash.h> -//#include <Swiften/Elements/RTPPayloadType.h> #include <Swiften/Elements/JingleRTPDescription.h> +#include <Swiften/Elements/JingleRawUDPTransportPayload.h> #include <Swiften/Base/DateTime.h> #include <Swiften/Base/Log.h> @@ -47,6 +47,8 @@ class JingleParserTest : public CppUnit::TestFixture { CPPUNIT_TEST(testParse_Xep0167_Example1); CPPUNIT_TEST(testParse_Xep0167_Example48); + CPPUNIT_TEST(testParse_Xep0177_Example3); + CPPUNIT_TEST_SUITE_END(); public: @@ -819,6 +821,77 @@ class JingleParserTest : public CppUnit::TestFixture { CPPUNIT_ASSERT_EQUAL(std::string("AS"), type); CPPUNIT_ASSERT_EQUAL(std::string("128"), value); } + + // http://xmpp.org/extensions/xep-0177.html#example-3 + void testParse_Xep0177_Example3() { + PayloadsParserTester parser; + CPPUNIT_ASSERT(parser.parse( + "<jingle action=\"session-accept\"" + " initiator=\"romeo@montague.lit/orchard\"" + " responder=\"juliet@capulet.lit/balcony\"" + " sid=\"a73sjjvkla37jfea\"" + " xmlns=\"urn:xmpp:jingle:1\">" + "<content creator=\"initiator\" name=\"voice\">" + "<description media=\"audio\" xmlns=\"urn:xmpp:jingle:apps:rtp:1\">" + "<payload-type id=\"18\" name=\"G729\"/>" + "</description>" + "<transport xmlns=\"urn:xmpp:jingle:transports:raw-udp:1\">" + "<candidate component=\"1\"" + " generation=\"0\"" + " id=\"z7sdjb01hf\"" + " ip=\"208.68.163.214\"" + " port=\"9876\"/>" + "<candidate component=\"2\"" + " generation=\"0\"" + " id=\"hg92lsn10b\"" + " ip=\"208.68.163.214\"" + " port=\"9877\"/>" + "</transport>" + "</content>" + "</jingle>" + )); + + JinglePayload::ref jingle = parser.getPayload<JinglePayload>(); + CPPUNIT_ASSERT(jingle); + CPPUNIT_ASSERT_EQUAL(JinglePayload::SessionAccept, jingle->getAction()); + CPPUNIT_ASSERT_EQUAL(JID("romeo@montague.lit/orchard"), jingle->getInitiator()); + CPPUNIT_ASSERT_EQUAL(JID("juliet@capulet.lit/balcony"), jingle->getResponder()); + CPPUNIT_ASSERT_EQUAL(std::string("a73sjjvkla37jfea"), jingle->getSessionID()); + + JingleContentPayload::ref content = jingle->getPayload<JingleContentPayload>(); + CPPUNIT_ASSERT(content); + CPPUNIT_ASSERT_EQUAL(std::string("voice"), content->getName()); + + JingleRTPDescription::ref desc = content->getDescription<JingleRTPDescription>(); + CPPUNIT_ASSERT(desc); + CPPUNIT_ASSERT_EQUAL(JingleRTPDescription::Audio, desc->getMedia()); + + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), desc->getPayloadTypes().size()); + + const RTPPayloadType& payloadType = desc->getPayloadTypes()[0]; + CPPUNIT_ASSERT_EQUAL(static_cast<boost::uint8_t>(18), payloadType.getID()); + CPPUNIT_ASSERT_EQUAL(std::string("G729"), payloadType.getName()); + + JingleRawUDPTransportPayload::ref transport = content->getTransport<JingleRawUDPTransportPayload>(); + CPPUNIT_ASSERT(transport); + + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), transport->getCandidates().size()); + + const JingleRawUDPTransportPayload::Candidate& candidate1 = transport->getCandidates()[0]; + boost::uint8_t expected = 1; + boost::uint8_t actual = candidate1.component; + + CPPUNIT_ASSERT_EQUAL(expected, actual); + CPPUNIT_ASSERT_EQUAL(static_cast<boost::uint8_t>(0), candidate1.generation); + CPPUNIT_ASSERT_EQUAL(std::string("z7sdjb01hf"), candidate1.cid); + CPPUNIT_ASSERT(HostAddressPort(HostAddress("208.68.163.214"), 9876) == candidate1.hostAddressPort); + + const JingleRawUDPTransportPayload::Candidate& candidate2 = transport->getCandidates()[1]; + CPPUNIT_ASSERT_EQUAL(static_cast<boost::uint8_t>(2), candidate2.component); + CPPUNIT_ASSERT_EQUAL(static_cast<boost::uint8_t>(0), candidate2.generation); + CPPUNIT_ASSERT_EQUAL(std::string("hg92lsn10b"), candidate2.cid); + CPPUNIT_ASSERT(HostAddressPort(HostAddress("208.68.163.214"), 9877) == candidate2.hostAddressPort); + } }; CPPUNIT_TEST_SUITE_REGISTRATION(JingleParserTest); |