Move a test from media_session_unittest to codec_vendor_unittest

This test was only testing codec vendor functionality.

Bug: webrtc:360058654
Change-Id: I5763e766a44f6bb1542c4281b1d6c177a52c8c74
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/375600
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43811}
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 4afc0a2..90bab05 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -2010,6 +2010,7 @@
     sources = [
       "audio_rtp_receiver_unittest.cc",
       "channel_unittest.cc",
+      "codec_vendor_unittest.cc",
       "dtls_srtp_transport_integrationtest.cc",
       "dtls_srtp_transport_unittest.cc",
       "dtls_transport_unittest.cc",
@@ -2036,6 +2037,7 @@
     deps = [
       ":audio_rtp_receiver",
       ":channel",
+      ":codec_vendor",
       ":dtls_srtp_transport",
       ":dtls_transport",
       ":ice_transport",
diff --git a/pc/codec_vendor_unittest.cc b/pc/codec_vendor_unittest.cc
new file mode 100644
index 0000000..943b314
--- /dev/null
+++ b/pc/codec_vendor_unittest.cc
@@ -0,0 +1,105 @@
+/*
+ *  Copyright 2004 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "pc/codec_vendor.h"
+
+#include <stddef.h>
+
+#include <string>
+#include <vector>
+
+#include "absl/strings/string_view.h"
+#include "media/base/codec.h"
+#include "media/base/codec_list.h"
+#include "media/base/media_constants.h"
+#include "media/base/test_utils.h"
+#include "rtc_base/checks.h"
+#include "test/gtest.h"
+
+namespace cricket {
+namespace {
+
+Codec CreateRedAudioCodec(absl::string_view encoding_id) {
+  Codec red = CreateAudioCodec(63, "red", 48000, 2);
+  red.SetParam(kCodecParamNotInNameValueFormat,
+               std::string(encoding_id) + '/' + std::string(encoding_id));
+  return red;
+}
+
+const Codec kAudioCodecs1[] = {CreateAudioCodec(111, "opus", 48000, 2),
+                               CreateRedAudioCodec("111"),
+                               CreateAudioCodec(102, "iLBC", 8000, 1),
+                               CreateAudioCodec(0, "PCMU", 8000, 1),
+                               CreateAudioCodec(8, "PCMA", 8000, 1),
+                               CreateAudioCodec(107, "CN", 48000, 1)};
+
+const Codec kAudioCodecs2[] = {
+    CreateAudioCodec(126, "foo", 16000, 1),
+    CreateAudioCodec(0, "PCMU", 8000, 1),
+    CreateAudioCodec(127, "iLBC", 8000, 1),
+};
+
+const Codec kAudioCodecsAnswer[] = {
+    CreateAudioCodec(102, "iLBC", 8000, 1),
+    CreateAudioCodec(0, "PCMU", 8000, 1),
+};
+
+TEST(CodecVendorTest, TestSetAudioCodecs) {
+  CodecVendor codec_vendor(nullptr, false);
+  std::vector<Codec> send_codecs = MAKE_VECTOR(kAudioCodecs1);
+  std::vector<Codec> recv_codecs = MAKE_VECTOR(kAudioCodecs2);
+
+  // The merged list of codecs should contain any send codecs that are also
+  // nominally in the receive codecs list. Payload types should be picked from
+  // the send codecs and a number-of-channels of 0 and 1 should be equivalent
+  // (set to 1). This equals what happens when the send codecs are used in an
+  // offer and the receive codecs are used in the following answer.
+  const std::vector<Codec> sendrecv_codecs = MAKE_VECTOR(kAudioCodecsAnswer);
+  const std::vector<Codec> no_codecs;
+
+  RTC_CHECK_EQ(send_codecs[2].name, "iLBC")
+      << "Please don't change shared test data!";
+  RTC_CHECK_EQ(recv_codecs[2].name, "iLBC")
+      << "Please don't change shared test data!";
+  // Alter iLBC send codec to have zero channels, to test that that is handled
+  // properly.
+  send_codecs[2].channels = 0;
+
+  // Alter iLBC receive codec to be lowercase, to test that case conversions
+  // are handled properly.
+  recv_codecs[2].name = "ilbc";
+
+  // Test proper merge
+  codec_vendor.set_audio_codecs(send_codecs, recv_codecs);
+  EXPECT_EQ(send_codecs, codec_vendor.audio_send_codecs().codecs());
+  EXPECT_EQ(recv_codecs, codec_vendor.audio_recv_codecs().codecs());
+  EXPECT_EQ(sendrecv_codecs, codec_vendor.audio_sendrecv_codecs().codecs());
+
+  // Test empty send codecs list
+  codec_vendor.set_audio_codecs(no_codecs, recv_codecs);
+  EXPECT_EQ(no_codecs, codec_vendor.audio_send_codecs().codecs());
+  EXPECT_EQ(recv_codecs, codec_vendor.audio_recv_codecs().codecs());
+  EXPECT_EQ(no_codecs, codec_vendor.audio_sendrecv_codecs().codecs());
+
+  // Test empty recv codecs list
+  codec_vendor.set_audio_codecs(send_codecs, no_codecs);
+  EXPECT_EQ(send_codecs, codec_vendor.audio_send_codecs().codecs());
+  EXPECT_EQ(no_codecs, codec_vendor.audio_recv_codecs().codecs());
+  EXPECT_EQ(no_codecs, codec_vendor.audio_sendrecv_codecs().codecs());
+
+  // Test all empty codec lists
+  codec_vendor.set_audio_codecs(no_codecs, no_codecs);
+  EXPECT_EQ(no_codecs, codec_vendor.audio_send_codecs().codecs());
+  EXPECT_EQ(no_codecs, codec_vendor.audio_recv_codecs().codecs());
+  EXPECT_EQ(no_codecs, codec_vendor.audio_sendrecv_codecs().codecs());
+}
+
+}  // namespace
+}  // namespace cricket
diff --git a/pc/media_session_unittest.cc b/pc/media_session_unittest.cc
index 7c8f012..44b5349 100644
--- a/pc/media_session_unittest.cc
+++ b/pc/media_session_unittest.cc
@@ -4652,76 +4652,6 @@
                          MediaProtocolTest,
                          ValuesIn(kMediaProtocolsDtls));
 
-TEST_F(MediaSessionDescriptionFactoryTest, TestSetAudioCodecs) {
-  webrtc::test::ScopedKeyValueConfig field_trials;
-  TransportDescriptionFactory tdf(field_trials);
-  tdf.set_certificate(rtc::RTCCertificate::Create(
-      std::unique_ptr<rtc::SSLIdentity>(new rtc::FakeSSLIdentity("id"))));
-
-  UniqueRandomIdGenerator ssrc_generator;
-  webrtc::FakePayloadTypeSuggester pt_suggester;
-  MediaSessionDescriptionFactory sf(nullptr, false, &ssrc_generator, &tdf,
-                                    &pt_suggester);
-  std::vector<Codec> send_codecs = MAKE_VECTOR(kAudioCodecs1);
-  std::vector<Codec> recv_codecs = MAKE_VECTOR(kAudioCodecs2);
-
-  // The merged list of codecs should contain any send codecs that are also
-  // nominally in the receive codecs list. Payload types should be picked from
-  // the send codecs and a number-of-channels of 0 and 1 should be equivalent
-  // (set to 1). This equals what happens when the send codecs are used in an
-  // offer and the receive codecs are used in the following answer.
-  const std::vector<Codec> sendrecv_codecs = MAKE_VECTOR(kAudioCodecsAnswer);
-  const std::vector<Codec> no_codecs;
-
-  RTC_CHECK_EQ(send_codecs[2].name, "iLBC")
-      << "Please don't change shared test data!";
-  RTC_CHECK_EQ(recv_codecs[2].name, "iLBC")
-      << "Please don't change shared test data!";
-  // Alter iLBC send codec to have zero channels, to test that that is handled
-  // properly.
-  send_codecs[2].channels = 0;
-
-  // Alter iLBC receive codec to be lowercase, to test that case conversions
-  // are handled properly.
-  recv_codecs[2].name = "ilbc";
-
-  // Test proper merge
-  sf.CodecVendorForTesting()->set_audio_codecs(send_codecs, recv_codecs);
-  EXPECT_EQ(send_codecs,
-            sf.CodecVendorForTesting()->audio_send_codecs().codecs());
-  EXPECT_EQ(recv_codecs,
-            sf.CodecVendorForTesting()->audio_recv_codecs().codecs());
-  EXPECT_EQ(sendrecv_codecs,
-            sf.CodecVendorForTesting()->audio_sendrecv_codecs().codecs());
-
-  // Test empty send codecs list
-  sf.CodecVendorForTesting()->set_audio_codecs(no_codecs, recv_codecs);
-  EXPECT_EQ(no_codecs,
-            sf.CodecVendorForTesting()->audio_send_codecs().codecs());
-  EXPECT_EQ(recv_codecs,
-            sf.CodecVendorForTesting()->audio_recv_codecs().codecs());
-  EXPECT_EQ(no_codecs,
-            sf.CodecVendorForTesting()->audio_sendrecv_codecs().codecs());
-
-  // Test empty recv codecs list
-  sf.CodecVendorForTesting()->set_audio_codecs(send_codecs, no_codecs);
-  EXPECT_EQ(send_codecs,
-            sf.CodecVendorForTesting()->audio_send_codecs().codecs());
-  EXPECT_EQ(no_codecs,
-            sf.CodecVendorForTesting()->audio_recv_codecs().codecs());
-  EXPECT_EQ(no_codecs,
-            sf.CodecVendorForTesting()->audio_sendrecv_codecs().codecs());
-
-  // Test all empty codec lists
-  sf.CodecVendorForTesting()->set_audio_codecs(no_codecs, no_codecs);
-  EXPECT_EQ(no_codecs,
-            sf.CodecVendorForTesting()->audio_send_codecs().codecs());
-  EXPECT_EQ(no_codecs,
-            sf.CodecVendorForTesting()->audio_recv_codecs().codecs());
-  EXPECT_EQ(no_codecs,
-            sf.CodecVendorForTesting()->audio_sendrecv_codecs().codecs());
-}
-
 // Compare the two vectors of codecs ignoring the payload type.
 bool CodecsMatch(const std::vector<Codec>& codecs1,
                  const std::vector<Codec>& codecs2) {