// 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. #ifndef MOJO_PUBLIC_CPP_BINDINGS_TESTS_BINDINGS_TEST_BASE_H_ #define MOJO_PUBLIC_CPP_BINDINGS_TESTS_BINDINGS_TEST_BASE_H_ #include "base/test/scoped_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" namespace mojo { // Used to parameterize tests which inherit from BindingsTestBase to exercise // various message serialization-related code paths for intra-process bindings // usage. enum class BindingsTestSerializationMode { // Messages should be serialized immediately before sending. kSerializeBeforeSend, // Messages should be serialized immediately before dispatching. kSerializeBeforeDispatch, // Messages should never be serialized. kNeverSerialize, }; class BindingsTestBase : public testing::Test, public testing::WithParamInterface<BindingsTestSerializationMode> { public: BindingsTestBase(); ~BindingsTestBase(); // Helper which other test fixtures can use. static void SetupSerializationBehavior(BindingsTestSerializationMode mode); private: base::test::ScopedTaskEnvironment task_environment_; }; } // namespace mojo #define INSTANTIATE_MOJO_BINDINGS_TEST_CASE_P(fixture) \ INSTANTIATE_TEST_CASE_P( \ , fixture, \ testing::Values( \ mojo::BindingsTestSerializationMode::kSerializeBeforeSend, \ mojo::BindingsTestSerializationMode::kSerializeBeforeDispatch, \ mojo::BindingsTestSerializationMode::kNeverSerialize)) #endif // MOJO_PUBLIC_CPP_BINDINGS_TESTS_BINDINGS_TEST_BASE_H_