summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/pc/rtp_media_utils_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/pc/rtp_media_utils_unittest.cc')
-rw-r--r--third_party/libwebrtc/pc/rtp_media_utils_unittest.cc97
1 files changed, 97 insertions, 0 deletions
diff --git a/third_party/libwebrtc/pc/rtp_media_utils_unittest.cc b/third_party/libwebrtc/pc/rtp_media_utils_unittest.cc
new file mode 100644
index 0000000000..5ee49e356d
--- /dev/null
+++ b/third_party/libwebrtc/pc/rtp_media_utils_unittest.cc
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2017 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/rtp_media_utils.h"
+
+#include <tuple>
+
+#include "test/gtest.h"
+
+namespace webrtc {
+
+using ::testing::Bool;
+using ::testing::Combine;
+using ::testing::Values;
+using ::testing::ValuesIn;
+
+RtpTransceiverDirection kAllDirections[] = {
+ RtpTransceiverDirection::kSendRecv, RtpTransceiverDirection::kSendOnly,
+ RtpTransceiverDirection::kRecvOnly, RtpTransceiverDirection::kInactive};
+
+class EnumerateAllDirectionsTest
+ : public ::testing::TestWithParam<RtpTransceiverDirection> {};
+
+// Test that converting the direction to send/recv and back again results in the
+// same direction.
+TEST_P(EnumerateAllDirectionsTest, TestIdentity) {
+ RtpTransceiverDirection direction = GetParam();
+
+ bool send = RtpTransceiverDirectionHasSend(direction);
+ bool recv = RtpTransceiverDirectionHasRecv(direction);
+
+ EXPECT_EQ(direction, RtpTransceiverDirectionFromSendRecv(send, recv));
+}
+
+// Test that reversing the direction is equivalent to swapping send/recv.
+TEST_P(EnumerateAllDirectionsTest, TestReversedSwapped) {
+ RtpTransceiverDirection direction = GetParam();
+
+ bool send = RtpTransceiverDirectionHasSend(direction);
+ bool recv = RtpTransceiverDirectionHasRecv(direction);
+
+ EXPECT_EQ(RtpTransceiverDirectionFromSendRecv(recv, send),
+ RtpTransceiverDirectionReversed(direction));
+}
+
+// Test that reversing the direction twice results in the same direction.
+TEST_P(EnumerateAllDirectionsTest, TestReversedIdentity) {
+ RtpTransceiverDirection direction = GetParam();
+
+ EXPECT_EQ(direction, RtpTransceiverDirectionReversed(
+ RtpTransceiverDirectionReversed(direction)));
+}
+
+INSTANTIATE_TEST_SUITE_P(RtpTransceiverDirectionTest,
+ EnumerateAllDirectionsTest,
+ ValuesIn(kAllDirections));
+
+class EnumerateAllDirectionsAndBool
+ : public ::testing::TestWithParam<
+ std::tuple<RtpTransceiverDirection, bool>> {};
+
+TEST_P(EnumerateAllDirectionsAndBool, TestWithSendSet) {
+ RtpTransceiverDirection direction = std::get<0>(GetParam());
+ bool send = std::get<1>(GetParam());
+
+ RtpTransceiverDirection result =
+ RtpTransceiverDirectionWithSendSet(direction, send);
+
+ EXPECT_EQ(send, RtpTransceiverDirectionHasSend(result));
+ EXPECT_EQ(RtpTransceiverDirectionHasRecv(direction),
+ RtpTransceiverDirectionHasRecv(result));
+}
+
+TEST_P(EnumerateAllDirectionsAndBool, TestWithRecvSet) {
+ RtpTransceiverDirection direction = std::get<0>(GetParam());
+ bool recv = std::get<1>(GetParam());
+
+ RtpTransceiverDirection result =
+ RtpTransceiverDirectionWithRecvSet(direction, recv);
+
+ EXPECT_EQ(RtpTransceiverDirectionHasSend(direction),
+ RtpTransceiverDirectionHasSend(result));
+ EXPECT_EQ(recv, RtpTransceiverDirectionHasRecv(result));
+}
+
+INSTANTIATE_TEST_SUITE_P(RtpTransceiverDirectionTest,
+ EnumerateAllDirectionsAndBool,
+ Combine(ValuesIn(kAllDirections), Bool()));
+
+} // namespace webrtc