Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / remoting / protocol / content_description_unittest.cc
blob4f610fc2c24894f02f5771efa0162c6ca2b74ca8
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "remoting/protocol/content_description.h"
7 #include <string>
9 #include "base/logging.h"
10 #include "remoting/protocol/authenticator.h"
11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
15 namespace remoting {
16 namespace protocol {
18 TEST(ContentDescriptionTest, FormatAndParse) {
19 scoped_ptr<CandidateSessionConfig> config =
20 CandidateSessionConfig::CreateDefault();
21 ContentDescription description(
22 config.Pass(), Authenticator::CreateEmptyAuthenticatorMessage());
23 scoped_ptr<buzz::XmlElement> xml(description.ToXml());
24 LOG(ERROR) << xml->Str();
25 scoped_ptr<ContentDescription> parsed(
26 ContentDescription::ParseXml(xml.get()));
27 ASSERT_TRUE(parsed.get());
28 EXPECT_TRUE(description.config()->control_configs() ==
29 parsed->config()->control_configs());
30 EXPECT_TRUE(description.config()->video_configs() ==
31 parsed->config()->video_configs());
32 EXPECT_TRUE(description.config()->event_configs() ==
33 parsed->config()->event_configs());
34 EXPECT_TRUE(description.config()->audio_configs() ==
35 parsed->config()->audio_configs());
38 // Verify that we can still parse configs with transports that we don't
39 // recognize.
40 TEST(ContentDescriptionTest, ParseUnknown) {
41 std::string kTestDescription =
42 "<description xmlns=\"google:remoting\">"
43 " <control transport=\"stream\" version=\"2\"/>"
44 " <event transport=\"stream\" version=\"2\"/>"
45 " <event transport=\"new_awesome_transport\" version=\"3\"/>"
46 " <video transport=\"stream\" version=\"2\" codec=\"vp8\"/>"
47 " <authentication/>"
48 "</description>";
49 scoped_ptr<buzz::XmlElement> xml(buzz::XmlElement::ForStr(kTestDescription));
50 scoped_ptr<ContentDescription> parsed(
51 ContentDescription::ParseXml(xml.get()));
52 ASSERT_TRUE(parsed.get());
53 EXPECT_EQ(1U, parsed->config()->event_configs().size());
54 EXPECT_TRUE(parsed->config()->event_configs().front() ==
55 ChannelConfig(ChannelConfig::TRANSPORT_STREAM,
56 kDefaultStreamVersion,
57 ChannelConfig::CODEC_UNDEFINED));
60 // Verify that we can parse configs with none transport without version and
61 // codec.
62 TEST(ContentDescriptionTest, NoneTransport) {
63 std::string kTestDescription =
64 "<description xmlns=\"google:remoting\">"
65 " <control transport=\"stream\" version=\"2\"/>"
66 " <event transport=\"stream\" version=\"2\"/>"
67 " <event transport=\"stream\" version=\"2\"/>"
68 " <video transport=\"stream\" version=\"2\" codec=\"vp8\"/>"
69 " <audio transport=\"none\"/>"
70 " <authentication/>"
71 "</description>";
72 scoped_ptr<buzz::XmlElement> xml(buzz::XmlElement::ForStr(kTestDescription));
73 scoped_ptr<ContentDescription> parsed(
74 ContentDescription::ParseXml(xml.get()));
75 ASSERT_TRUE(parsed.get());
76 EXPECT_EQ(1U, parsed->config()->audio_configs().size());
77 EXPECT_TRUE(parsed->config()->audio_configs().front() == ChannelConfig());
80 // Verify that we can parse configs with none transport with version and
81 // codec.
82 TEST(ContentDescriptionTest, NoneTransportWithCodec) {
83 std::string kTestDescription =
84 "<description xmlns=\"google:remoting\">"
85 " <control transport=\"stream\" version=\"2\"/>"
86 " <event transport=\"stream\" version=\"2\"/>"
87 " <event transport=\"stream\" version=\"2\"/>"
88 " <video transport=\"stream\" version=\"2\" codec=\"vp8\"/>"
89 " <audio transport=\"none\" version=\"2\" codec=\"verbatim\"/>"
90 " <authentication/>"
91 "</description>";
92 scoped_ptr<buzz::XmlElement> xml(buzz::XmlElement::ForStr(kTestDescription));
93 scoped_ptr<ContentDescription> parsed(
94 ContentDescription::ParseXml(xml.get()));
95 ASSERT_TRUE(parsed.get());
96 EXPECT_EQ(1U, parsed->config()->audio_configs().size());
97 EXPECT_TRUE(parsed->config()->audio_configs().front() == ChannelConfig());
100 } // namespace protocol
101 } // namespace remoting