Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Unified Diff: extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_descriptor_unittest.cc

Issue 1800493003: Implement some WiFi Display elementary stream descriptors. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Grammar nits Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_descriptor.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_descriptor_unittest.cc
diff --git a/extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_descriptor_unittest.cc b/extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_descriptor_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4e049db9ba7fd8dedbbe9cca2a684f0be1b751fd
--- /dev/null
+++ b/extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_descriptor_unittest.cc
@@ -0,0 +1,151 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_descriptor.h"
+
+#include <algorithm>
+#include <vector>
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+using LPCMAudioStreamDescriptor =
+ extensions::WiFiDisplayElementaryStreamDescriptor::LPCMAudioStream;
+
+namespace extensions {
+
+namespace {
+
+// Copy constructors cannot always be tested by calling them directly as
+// a compiler is allowed to optimize copy constructor calls away in certain
+// cases (that is called return value optimization). Therefore, this helper
+// function is needed to really create a copy of an object.
+template <typename T>
+T Copy(const T& t) {
+ return t;
+}
+
+class Data : public std::vector<uint8_t> {
+ public:
+ template <size_t N>
+ explicit Data(const char (&str)[N]) {
+ EXPECT_EQ('\0', str[N - 1]);
+ insert(end(), str, str + N - 1);
+ }
+
+ bool operator==(const WiFiDisplayElementaryStreamDescriptor& rhs) const {
+ return size() == rhs.size() && std::equal(begin(), end(), rhs.begin());
+ }
+};
+
+TEST(WiFiDisplayElementaryStreamDescriptorTest, AVCTimingAndHRDDescriptor) {
+ using AVCTimingAndHRDDescriptor =
+ WiFiDisplayElementaryStreamDescriptor::AVCTimingAndHRD;
+ EXPECT_EQ(Data("\x2A\x02\x7E\x1F"), AVCTimingAndHRDDescriptor::Create());
+ EXPECT_EQ(Data("\x2A\x02\x7E\x1F"),
+ Copy(AVCTimingAndHRDDescriptor::Create()));
+}
+
+TEST(WiFiDisplayElementaryStreamDescriptorTest, AVCVideoDescriptor) {
+ using AVCVideoDescriptor = WiFiDisplayElementaryStreamDescriptor::AVCVideo;
+ EXPECT_EQ(
+ Data("\x28\x04\x00\x00\x00\x3F"),
+ AVCVideoDescriptor::Create(0x0u, false, false, false, 0x0u, 0x0u, false));
+ EXPECT_EQ(Data("\x28\x04\x00\x00\x00\x3F"),
+ Copy(AVCVideoDescriptor::Create(0x0u, false, false, false, 0x0u,
+ 0x0u, false)));
+ EXPECT_EQ(Data("\x28\x04\xFF\x00\x00\x3F"),
+ AVCVideoDescriptor::Create(0xFFu, false, false, false, 0x0u, 0x0u,
+ false));
+ EXPECT_EQ(
+ Data("\x28\x04\x00\x80\x00\x3F"),
+ AVCVideoDescriptor::Create(0x0u, true, false, false, 0x0u, 0x0u, false));
+ EXPECT_EQ(
+ Data("\x28\x04\x00\x40\x00\x3F"),
+ AVCVideoDescriptor::Create(0x0u, false, true, false, 0x0u, 0x0u, false));
+ EXPECT_EQ(
+ Data("\x28\x04\x00\x20\x00\x3F"),
+ AVCVideoDescriptor::Create(0x0u, false, false, true, 0x0u, 0x0u, false));
+ EXPECT_EQ(Data("\x28\x04\x00\x1F\x00\x3F"),
+ AVCVideoDescriptor::Create(0x0u, false, false, false, 0x1Fu, 0x0u,
+ false));
+ EXPECT_EQ(Data("\x28\x04\x00\x00\xFF\x3F"),
+ AVCVideoDescriptor::Create(0x0u, false, false, false, 0x0u, 0xFFu,
+ false));
+ EXPECT_EQ(
+ Data("\x28\x04\x00\x00\x00\xBF"),
+ AVCVideoDescriptor::Create(0x0u, false, false, false, 0x0u, 0x0u, true));
+}
+
+class LPCMAudioStreamDescriptorTest
+ : public testing::TestWithParam<
+ testing::tuple<LPCMAudioStreamDescriptor::SamplingFrequency,
+ LPCMAudioStreamDescriptor::BitsPerSample,
+ bool,
+ LPCMAudioStreamDescriptor::NumberOfChannels,
+ Data>> {
+ protected:
+ LPCMAudioStreamDescriptorTest()
+ : sampling_frequency_(testing::get<0>(GetParam())),
+ bits_per_sample_(testing::get<1>(GetParam())),
+ emphasis_flag_(testing::get<2>(GetParam())),
+ number_of_channels_(testing::get<3>(GetParam())),
+ expected_data_(testing::get<4>(GetParam())),
+ descriptor_(LPCMAudioStreamDescriptor::Create(sampling_frequency_,
+ bits_per_sample_,
+ emphasis_flag_,
+ number_of_channels_)) {}
+
+ const LPCMAudioStreamDescriptor::SamplingFrequency sampling_frequency_;
+ const LPCMAudioStreamDescriptor::BitsPerSample bits_per_sample_;
+ const bool emphasis_flag_;
+ const LPCMAudioStreamDescriptor::NumberOfChannels number_of_channels_;
+ const Data expected_data_;
+ const WiFiDisplayElementaryStreamDescriptor descriptor_;
+};
+
+TEST_P(LPCMAudioStreamDescriptorTest, Create) {
+ EXPECT_EQ(expected_data_, descriptor_);
+ EXPECT_EQ(expected_data_, Copy(descriptor_));
+}
+
+TEST_P(LPCMAudioStreamDescriptorTest, Accessors) {
+ ASSERT_EQ(LPCMAudioStreamDescriptor::kTag, descriptor_.tag());
+ const LPCMAudioStreamDescriptor& descriptor =
+ *static_cast<const LPCMAudioStreamDescriptor*>(&descriptor_);
+ EXPECT_EQ(sampling_frequency_, descriptor.sampling_frequency());
+ EXPECT_EQ(bits_per_sample_, descriptor.bits_per_sample());
+ EXPECT_EQ(emphasis_flag_, descriptor.emphasis_flag());
+ EXPECT_EQ(number_of_channels_, descriptor.number_of_channels());
+}
+
+INSTANTIATE_TEST_CASE_P(
+ WiFiDisplayElementaryStreamDescriptorTests,
+ LPCMAudioStreamDescriptorTest,
+ testing::Values(testing::make_tuple(
+ LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_44_1K,
+ LPCMAudioStreamDescriptor::BITS_PER_SAMPLE_16,
+ false,
+ LPCMAudioStreamDescriptor::NUMBER_OF_CHANNELS_DUAL_MONO,
+ Data("\x83\x02\x26\x0F")),
+ testing::make_tuple(
+ LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_48K,
+ LPCMAudioStreamDescriptor::BITS_PER_SAMPLE_16,
+ false,
+ LPCMAudioStreamDescriptor::NUMBER_OF_CHANNELS_DUAL_MONO,
+ Data("\x83\x02\x46\x0F")),
+ testing::make_tuple(
+ LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_44_1K,
+ LPCMAudioStreamDescriptor::BITS_PER_SAMPLE_16,
+ true,
+ LPCMAudioStreamDescriptor::NUMBER_OF_CHANNELS_DUAL_MONO,
+ Data("\x83\x02\x27\x0F")),
+ testing::make_tuple(
+ LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_44_1K,
+ LPCMAudioStreamDescriptor::BITS_PER_SAMPLE_16,
+ false,
+ LPCMAudioStreamDescriptor::NUMBER_OF_CHANNELS_STEREO,
+ Data("\x83\x02\x26\x2F"))));
+
+} // namespace
+} // namespace extensions
« no previous file with comments | « extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_descriptor.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698