| // 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_ |