/* * 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 yoga::Node clonedNode; static YGNodeRef cloneNode(YGNodeConstRef, YGNodeConstRef, int) { return &clonedNode; } static YGNodeRef doNotClone(YGNodeConstRef, YGNodeConstRef, int) { return nullptr; } }; TEST_F(ConfigCloningTest, uses_values_provided_by_cloning_callback) { config->setCloneNodeCallback(cloneNode); yoga::Node 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); yoga::Node 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( [](YGNodeConstRef, YGNodeConstRef, int, void* context) { return (YGNodeRef) context; }); yoga::Node 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(); } yoga::Node ConfigCloningTest::clonedNode = {};