| /* |
| * |
| * Copyright (c) 2024 Project CHIP Authors |
| * All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| #pragma once |
| |
| /* |
| * Run Fixture's class function as a test. |
| * It is used to execute test cases that need to use private members of a particular class. |
| * Unlike the pigweed macro `FRIEND_TEST`, this approach allows you to define the entire |
| * test_fixture class as a friend, rather than having to define each testcase as a friend. |
| * |
| * @param test_fixture - the fixture class. |
| * |
| * @param test_name - the name of the test function. |
| * |
| * Example: |
| * class Foo // class to be tested |
| * { |
| * friend class TestCtx; |
| * private: |
| * bool privateFunction(); |
| * }; |
| * |
| * class TestCtx: public ::testing::Test |
| * { |
| * public: |
| * void testFunction(); |
| * }; |
| * |
| * TEST_F_FROM_FIXTURE(TestCtx, testFunction) |
| * { |
| * Foo foo; |
| * EXPECT_TRUE(foo.privateFunction()); |
| * } |
| * |
| */ |
| #define TEST_F_FROM_FIXTURE(test_fixture, test_name) \ |
| TEST_F(test_fixture, test_name) \ |
| { \ |
| test_name(); \ |
| } \ |
| void test_fixture::test_name() |