Tested equiv classes of DTLS/SCTP.

Cr-Commit-Position: refs/heads/master@{#8486}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8486 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/app/webrtc/webrtcsdp_unittest.cc b/talk/app/webrtc/webrtcsdp_unittest.cc
index 46b7da9..9c606af 100644
--- a/talk/app/webrtc/webrtcsdp_unittest.cc
+++ b/talk/app/webrtc/webrtcsdp_unittest.cc
@@ -114,6 +114,10 @@
                                         0x3E, 0x5D, 0x49, 0x6B,
                                         0x19, 0xE5, 0x7C, 0xAB};
 
+const static char kDtlsSctp[] = "DTLS/SCTP";
+const static char kUdpDtlsSctp[] = "UDP/DTLS/SCTP";
+const static char kTcpDtlsSctp[] = "TCP/DTLS/SCTP";
+
 struct CodecParams {
   int max_ptime;
   int ptime;
@@ -286,15 +290,6 @@
 
 // draft-ietf-mmusic-sctp-sdp-12
 static const char kSdpSctpDataChannelStringWithSctpPort[] =
-    "m=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\n"
-    "a=max-message-size=100000\r\n"
-    "a=sctp-port 5000\r\n"
-    "c=IN IP4 0.0.0.0\r\n"
-    "a=ice-ufrag:ufrag_data\r\n"
-    "a=ice-pwd:pwd_data\r\n"
-    "a=mid:data_content_name\r\n";
-
-static const char kSdpSctpDataChannelStringWithJustDtlsAndSctpPort[] =
     "m=application 9 DTLS/SCTP webrtc-datachannel\r\n"
     "a=max-message-size=100000\r\n"
     "a=sctp-port 5000\r\n"
@@ -754,11 +749,13 @@
     // Use an equivalence class here, for old and new versions of the
     // protocol description.
     if (cd1->protocol() == cricket::kMediaProtocolDtlsSctp
-        || cd1->protocol() == cricket::kMediaProtocolUdpDtlsSctp) {
-      const bool cd2_is_also_udp_dtls_sctp =
+        || cd1->protocol() == cricket::kMediaProtocolUdpDtlsSctp
+        || cd1->protocol() == cricket::kMediaProtocolTcpDtlsSctp) {
+      const bool cd2_is_also_dtls_sctp =
         cd2->protocol() == cricket::kMediaProtocolDtlsSctp
-        || cd2->protocol() == cricket::kMediaProtocolUdpDtlsSctp;
-      EXPECT_TRUE(cd2_is_also_udp_dtls_sctp);
+        || cd2->protocol() == cricket::kMediaProtocolUdpDtlsSctp
+        || cd2->protocol() == cricket::kMediaProtocolTcpDtlsSctp;
+      EXPECT_TRUE(cd2_is_also_dtls_sctp);
     } else {
       EXPECT_EQ(cd1->protocol(), cd2->protocol());
     }
@@ -2139,6 +2136,19 @@
   sdp_with_data.append(kSdpSctpDataChannelString);
   JsepSessionDescription jdesc_output(kDummyString);
 
+  // Verify with DTLS/SCTP (already in kSdpSctpDataChannelString).
+  EXPECT_TRUE(SdpDeserialize(sdp_with_data, &jdesc_output));
+  EXPECT_TRUE(CompareSessionDescription(jdesc, jdesc_output));
+
+  // Verify with UDP/DTLS/SCTP.
+  sdp_with_data.replace(sdp_with_data.find(kDtlsSctp),
+                        strlen(kDtlsSctp), kUdpDtlsSctp);
+  EXPECT_TRUE(SdpDeserialize(sdp_with_data, &jdesc_output));
+  EXPECT_TRUE(CompareSessionDescription(jdesc, jdesc_output));
+
+  // Verify with TCP/DTLS/SCTP.
+  sdp_with_data.replace(sdp_with_data.find(kUdpDtlsSctp),
+                        strlen(kUdpDtlsSctp), kTcpDtlsSctp);
   EXPECT_TRUE(SdpDeserialize(sdp_with_data, &jdesc_output));
   EXPECT_TRUE(CompareSessionDescription(jdesc, jdesc_output));
 }
@@ -2152,19 +2162,19 @@
   sdp_with_data.append(kSdpSctpDataChannelStringWithSctpPort);
   JsepSessionDescription jdesc_output(kDummyString);
 
+  // Verify with DTLS/SCTP (already in kSdpSctpDataChannelStringWithSctpPort).
   EXPECT_TRUE(SdpDeserialize(sdp_with_data, &jdesc_output));
   EXPECT_TRUE(CompareSessionDescription(jdesc, jdesc_output));
-}
 
-TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannelsWithJustDtlsAndPort) {
-  AddSctpDataChannel();
-  JsepSessionDescription jdesc(kDummyString);
-  ASSERT_TRUE(jdesc.Initialize(desc_.Copy(), kSessionId, kSessionVersion));
+  // Verify with UDP/DTLS/SCTP.
+  sdp_with_data.replace(sdp_with_data.find(kDtlsSctp),
+                        strlen(kDtlsSctp), kUdpDtlsSctp);
+  EXPECT_TRUE(SdpDeserialize(sdp_with_data, &jdesc_output));
+  EXPECT_TRUE(CompareSessionDescription(jdesc, jdesc_output));
 
-  std::string sdp_with_data = kSdpString;
-  sdp_with_data.append(kSdpSctpDataChannelStringWithJustDtlsAndSctpPort);
-  JsepSessionDescription jdesc_output(kDummyString);
-
+  // Verify with TCP/DTLS/SCTP.
+  sdp_with_data.replace(sdp_with_data.find(kUdpDtlsSctp),
+                        strlen(kUdpDtlsSctp), kTcpDtlsSctp);
   EXPECT_TRUE(SdpDeserialize(sdp_with_data, &jdesc_output));
   EXPECT_TRUE(CompareSessionDescription(jdesc, jdesc_output));
 }