Index: media/base/renderer_factory_selector_unittest.cc |
diff --git a/media/base/renderer_factory_selector_unittest.cc b/media/base/renderer_factory_selector_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b920866883d344ad9abeb3b5e10e54808fe97412 |
--- /dev/null |
+++ b/media/base/renderer_factory_selector_unittest.cc |
@@ -0,0 +1,73 @@ |
+// Copyright 2017 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 <memory> |
+ |
+#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
+#include "media/base/renderer_factory_selector.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace media { |
+ |
+class RendererFactorySelectorTest : public testing::Test { |
+ public: |
+ typedef RendererFactorySelector::FactoryType FactoryType; |
+ |
+ class FakeFactory : public RendererFactory { |
+ public: |
+ FakeFactory(FactoryType type) : type_(type){}; |
+ |
+ std::unique_ptr<Renderer> CreateRenderer( |
+ const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, |
+ const scoped_refptr<base::TaskRunner>& worker_task_runner, |
+ AudioRendererSink* audio_renderer_sink, |
+ VideoRendererSink* video_renderer_sink, |
+ const RequestSurfaceCB& request_surface_cb) override { |
+ return std::unique_ptr<Renderer>(); |
+ } |
+ |
+ FactoryType factory_type() { return type_; } |
+ |
+ private: |
+ FactoryType type_; |
+ }; |
+ |
+ RendererFactorySelectorTest(){}; |
+ |
+ void AddFactory(FactoryType type) { |
+ selector_.AddFactory(type, base::MakeUnique<FakeFactory>(type)); |
+ }; |
+ |
+ FactoryType GetCurrentlySelectedFactoryType() { |
+ return reinterpret_cast<FakeFactory*>(selector_.GetCurrentFactory()) |
+ ->factory_type(); |
+ } |
+ |
+ protected: |
+ RendererFactorySelector selector_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(RendererFactorySelectorTest); |
+}; |
+ |
+TEST_F(RendererFactorySelectorTest, SetBaseFactory_SingleFactory) { |
+ AddFactory(FactoryType::DEFAULT); |
+ |
+ selector_.SetBaseFactoryType(FactoryType::DEFAULT); |
+ |
+ EXPECT_EQ(FactoryType::DEFAULT, GetCurrentlySelectedFactoryType()); |
+} |
+ |
+TEST_F(RendererFactorySelectorTest, SetBaseFactory_MultipleFactory) { |
+ AddFactory(FactoryType::DEFAULT); |
+ AddFactory(FactoryType::MOJO); |
+ |
+ selector_.SetBaseFactoryType(FactoryType::DEFAULT); |
+ EXPECT_EQ(FactoryType::DEFAULT, GetCurrentlySelectedFactoryType()); |
+ |
+ selector_.SetBaseFactoryType(FactoryType::MOJO); |
+ EXPECT_EQ(FactoryType::MOJO, GetCurrentlySelectedFactoryType()); |
+} |
+ |
+} // namespace media |