/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ // @Generated by gentest/gentest.rb from gentest/fixtures/YGDisplayTest.html #include #include #include #include #include #include using namespace facebook; struct ConfigCloningTest : public ::testing::Test { std::unique_ptr> config; void SetUp() override; void TearDown() override; static YGNode clonedNode; static YGNodeRef cloneNode(YGNodeRef, YGNodeRef, int) { return &clonedNode; } static YGNodeRef doNotClone(YGNodeRef, YGNodeRef, int) { return nullptr; } }; TEST_F(ConfigCloningTest, uses_values_provided_by_cloning_callback) { config->setCloneNodeCallback(cloneNode); YGNode node{}, owner{}; auto clone = config->cloneNode(&node, &owner, 0, nullptr); ASSERT_EQ(clone, &clonedNode); } TEST_F( ConfigCloningTest, falls_back_to_regular_cloning_if_callback_returns_null) { config->setCloneNodeCallback(doNotClone); YGNode node{}, owner{}; auto clone = config->cloneNode(&node, &owner, 0, nullptr); ASSERT_NE(clone, nullptr); YGNodeFree(clone); } TEST_F(ConfigCloningTest, can_clone_with_context) { config->setCloneNodeCallback([](YGNodeRef, YGNodeRef, int, void* context) { return (YGNodeRef) context; }); YGNode node{}, owner{}, clone{}; ASSERT_EQ(config->cloneNode(&node, &owner, 0, &clone), &clone); } void ConfigCloningTest::SetUp() { config = {static_cast(YGConfigNew()), YGConfigFree}; } void ConfigCloningTest::TearDown() { config.reset(); } YGNode ConfigCloningTest::clonedNode = {};