summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/UnitTest/JingleSerializersTest.cpp')
-rw-r--r--Swiften/Serializer/PayloadSerializers/UnitTest/JingleSerializersTest.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/JingleSerializersTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/JingleSerializersTest.cpp
index b773fd7..bce9259 100644
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/JingleSerializersTest.cpp
+++ b/Swiften/Serializer/PayloadSerializers/UnitTest/JingleSerializersTest.cpp
@@ -15,6 +15,7 @@
#include <Swiften/Serializer/PayloadSerializers/JinglePayloadSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h>
#include <Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/JingleRTPDescriptionSerializer.h>
#include <Swiften/Elements/JingleFileTransferDescription.h>
#include <Swiften/Elements/StreamInitiationFileInfo.h>
#include <Swiften/Elements/JingleIBBTransportPayload.h>
@@ -23,6 +24,7 @@
#include <Swiften/Elements/JinglePayload.h>
#include <Swiften/Elements/JingleFileTransferReceived.h>
#include <Swiften/Elements/RTPPayloadType.h>
+#include <Swiften/Elements/JingleRTPDescription.h>
#include <Swiften/Base/DateTime.h>
using namespace Swift;
@@ -51,6 +53,9 @@ class JingleSerializersTest : public CppUnit::TestFixture {
CPPUNIT_TEST(testSerialize_RTPPayloadType_Simple);
CPPUNIT_TEST(testSerialize_RTPPayloadType_WithSub);
+ CPPUNIT_TEST(testSerialize_Xep0167_Example1);
+ CPPUNIT_TEST(testSerialize_Xep0167_Example48);
+
CPPUNIT_TEST_SUITE_END();
boost::shared_ptr<JinglePayloadSerializer> createTestling() {
@@ -565,6 +570,93 @@ class JingleSerializersTest : public CppUnit::TestFixture {
CPPUNIT_ASSERT_EQUAL(expected, serializer->serializePayload(payloadType));
}
+ // http://xmpp.org/extensions/xep-0167.html#example-1
+ void testSerialize_Xep0167_Example1() {
+ std::string expected =
+ "<jingle action=\"session-initiate\""
+ " initiator=\"romeo@montague.lit/orchard\""
+ " sid=\"a73sjjvkla37jfea\""
+ " xmlns=\"urn:xmpp:jingle:1\">"
+ "<content creator=\"initiator\" name=\"voice\">"
+ "<description media=\"audio\" xmlns=\"urn:xmpp:jingle:apps:rtp:1\">"
+ "<payload-type clockrate=\"16000\" id=\"96\" name=\"speex\"/>"
+ "<payload-type clockrate=\"8000\" id=\"97\" name=\"speex\"/>"
+ "<payload-type id=\"18\" name=\"G729\"/>"
+ "<payload-type id=\"0\" name=\"PCMU\"/>"
+ "<payload-type channels=\"2\" clockrate=\"16000\" id=\"103\" name=\"L16\"/>"
+ "<payload-type clockrate=\"8000\" id=\"98\" name=\"x-ISAC\"/>"
+ "</description>"
+ //"<transport [...] >"
+ "</content>"
+ "</jingle>";
+
+ JinglePayload::ref payload = boost::make_shared<JinglePayload>();
+ payload->setAction(JinglePayload::SessionInitiate);
+ payload->setInitiator(JID("romeo@montague.lit/orchard"));
+ payload->setSessionID("a73sjjvkla37jfea");
+
+ JingleRTPDescription::ref desc = boost::make_shared<JingleRTPDescription>(JingleRTPDescription::Audio);
+ desc->addPayloadType(RTPPayloadType(96, "speex", 16000));
+ desc->addPayloadType(RTPPayloadType(97, "speex", 8000));
+ desc->addPayloadType(RTPPayloadType(18, "G729"));
+ desc->addPayloadType(RTPPayloadType(0, "PCMU"));
+ desc->addPayloadType(RTPPayloadType(103, "L16", 16000, 2));
+ desc->addPayloadType(RTPPayloadType(98, "x-ISAC", 8000));
+
+ JingleContentPayload::ref content = boost::make_shared<JingleContentPayload>();
+ content->setCreator(JingleContentPayload::InitiatorCreator);
+ content->setName("voice");
+ content->addDescription(desc);
+
+ payload->addPayload(content);
+
+ CPPUNIT_ASSERT_EQUAL(expected, createTestling()->serialize(payload));
+ }
+
+ // http://xmpp.org/extensions/xep-0167.html#example-48
+ void testSerialize_Xep0167_Example48() {
+ std::string expected =
+ "<jingle action=\"content-accept\""
+ " initiator=\"romeo@montague.lit/orchard\""
+ " sid=\"a73sjjvkla37jfea\""
+ " xmlns=\"urn:xmpp:jingle:1\">"
+ "<content creator=\"initiator\" name=\"webcam\">"
+ "<description media=\"video\" xmlns=\"urn:xmpp:jingle:apps:rtp:1\">"
+ "<payload-type clockrate=\"90000\" id=\"98\" name=\"theora\">"
+ "<parameter name=\"height\" value=\"600\"/>"
+ //"<parameter name=\"width\" value=\"800\"/>"
+ //"<parameter name=\"delivery-method\" value=\"inline\"/>"
+ //"<parameter name=\"configuration\" value=\"somebase16string\"/>"
+ "<parameter name=\"sampling\" value=\"YCbCr-4:2:2\"/>"
+ "</payload-type>"
+ "<bandwidth type=\"AS\">128</bandwidth>"
+ "</description>"
+ //"<transport xmlns=\"urn:xmpp:jingle:transports:ice-udp:0\"/>"
+ "</content>"
+ "</jingle>";
+
+ JinglePayload::ref payload = boost::make_shared<JinglePayload>();
+ payload->setAction(JinglePayload::ContentAccept);
+ payload->setInitiator(JID("romeo@montague.lit/orchard"));
+ payload->setSessionID("a73sjjvkla37jfea");
+
+ JingleRTPDescription::ref desc = boost::make_shared<JingleRTPDescription>(JingleRTPDescription::Video);
+ RTPPayloadType payloadType(98, "theora", 90000);
+ payloadType.addParameter("height", "600");
+ payloadType.addParameter("sampling", "YCbCr-4:2:2");
+ desc->addPayloadType(payloadType);
+ desc->setBandwidth("AS", "128");
+
+ JingleContentPayload::ref content = boost::make_shared<JingleContentPayload>();
+ content->setCreator(JingleContentPayload::InitiatorCreator);
+ content->setName("webcam");
+ content->addDescription(desc);
+
+ payload->addPayload(content);
+
+ CPPUNIT_ASSERT_EQUAL(expected, createTestling()->serialize(payload));
+ }
+
private:
FullPayloadSerializerCollection collection;
};