Summary: `/*` is the standard throughout open source code. For example, Firefox uses single /*: https://hg.mozilla.org/mozilla-central/file/21d22b2f541258d3d1cf96c7ba5ad73e96e616b5/gfx/ipc/CompositorWidgetVsyncObserver.cpp#l3 In addition, Rust considers `/**` to be a doc comment (similar to Javadoc) and having such a comment at the beginning of the file causes `rustc` to barf. Note that some JavaScript tooling requires `/**`. This is OK since JavaScript files were not covered by the linter in the first place, but it would be good to have that tooling fixed too. Reviewed By: zertosh Differential Revision: D15640366 fbshipit-source-id: b4ed4599071516364d6109720750d6a43304c089
92 lines
3.4 KiB
C++
92 lines
3.4 KiB
C++
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the LICENSE
|
|
* file in the root directory of this source tree.
|
|
*/
|
|
#include <gtest/gtest.h>
|
|
#include <yoga/testutil/testutil.h>
|
|
#include <yoga/YGNode.h>
|
|
#include <yoga/Yoga.h>
|
|
|
|
using facebook::yoga::test::TestUtil;
|
|
|
|
TEST(YogaTest, assert_layout_trees_are_same) {
|
|
TestUtil::startCountingNodes();
|
|
|
|
YGConfig* config = YGConfigNew();
|
|
YGConfigSetUseLegacyStretchBehaviour(config, true);
|
|
const YGNodeRef root1 = YGNodeNewWithConfig(config);
|
|
YGNodeStyleSetWidth(root1, 500);
|
|
YGNodeStyleSetHeight(root1, 500);
|
|
|
|
const YGNodeRef root1_child0 = YGNodeNewWithConfig(config);
|
|
YGNodeStyleSetAlignItems(root1_child0, YGAlignFlexStart);
|
|
YGNodeInsertChild(root1, root1_child0, 0);
|
|
|
|
const YGNodeRef root1_child0_child0 = YGNodeNewWithConfig(config);
|
|
YGNodeStyleSetFlexGrow(root1_child0_child0, 1);
|
|
YGNodeStyleSetFlexShrink(root1_child0_child0, 1);
|
|
YGNodeInsertChild(root1_child0, root1_child0_child0, 0);
|
|
|
|
const YGNodeRef root1_child0_child0_child0 = YGNodeNewWithConfig(config);
|
|
YGNodeStyleSetFlexGrow(root1_child0_child0_child0, 1);
|
|
YGNodeStyleSetFlexShrink(root1_child0_child0_child0, 1);
|
|
YGNodeInsertChild(root1_child0_child0, root1_child0_child0_child0, 0);
|
|
|
|
const int32_t cal1_configInstanceCount = YGConfigGetInstanceCount();
|
|
const int32_t cal1_nodeInstanceCount = TestUtil::nodeCount();
|
|
|
|
YGNodeCalculateLayout(root1, YGUndefined, YGUndefined, YGDirectionLTR);
|
|
|
|
ASSERT_EQ(YGConfigGetInstanceCount(), cal1_configInstanceCount);
|
|
ASSERT_EQ(TestUtil::nodeCount(), cal1_nodeInstanceCount);
|
|
|
|
const YGNodeRef root2 = YGNodeNewWithConfig(config);
|
|
YGNodeStyleSetWidth(root2, 500);
|
|
YGNodeStyleSetHeight(root2, 500);
|
|
|
|
const YGNodeRef root2_child0 = YGNodeNewWithConfig(config);
|
|
YGNodeStyleSetAlignItems(root2_child0, YGAlignFlexStart);
|
|
YGNodeInsertChild(root2, root2_child0, 0);
|
|
|
|
const YGNodeRef root2_child0_child0 = YGNodeNewWithConfig(config);
|
|
YGNodeStyleSetFlexGrow(root2_child0_child0, 1);
|
|
YGNodeStyleSetFlexShrink(root2_child0_child0, 1);
|
|
YGNodeInsertChild(root2_child0, root2_child0_child0, 0);
|
|
|
|
const YGNodeRef root2_child0_child0_child0 = YGNodeNewWithConfig(config);
|
|
YGNodeStyleSetFlexGrow(root2_child0_child0_child0, 1);
|
|
YGNodeStyleSetFlexShrink(root2_child0_child0_child0, 1);
|
|
YGNodeInsertChild(root2_child0_child0, root2_child0_child0_child0, 0);
|
|
|
|
const int32_t cal2_configInstanceCount = YGConfigGetInstanceCount();
|
|
const int32_t cal2_nodeInstanceCount = TestUtil::nodeCount();
|
|
|
|
YGNodeCalculateLayout(root2, YGUndefined, YGUndefined, YGDirectionLTR);
|
|
|
|
ASSERT_EQ(YGConfigGetInstanceCount(), cal2_configInstanceCount);
|
|
ASSERT_EQ(TestUtil::nodeCount(), cal2_nodeInstanceCount);
|
|
|
|
ASSERT_TRUE(YGNodeLayoutGetDidUseLegacyFlag(root1));
|
|
ASSERT_TRUE(YGNodeLayoutGetDidUseLegacyFlag(root2));
|
|
ASSERT_TRUE(root1->isLayoutTreeEqualToNode(*root2));
|
|
|
|
YGNodeStyleSetAlignItems(root2, YGAlignFlexEnd);
|
|
|
|
const int32_t cal3_configInstanceCount = YGConfigGetInstanceCount();
|
|
const int32_t cal3_nodeInstanceCount = TestUtil::nodeCount();
|
|
|
|
YGNodeCalculateLayout(root2, YGUndefined, YGUndefined, YGDirectionLTR);
|
|
|
|
ASSERT_EQ(YGConfigGetInstanceCount(), cal3_configInstanceCount);
|
|
ASSERT_EQ(TestUtil::stopCountingNodes(), cal3_nodeInstanceCount);
|
|
|
|
ASSERT_FALSE(root1->isLayoutTreeEqualToNode(*root2));
|
|
|
|
YGNodeFreeRecursive(root1);
|
|
YGNodeFreeRecursive(root2);
|
|
|
|
YGConfigFree(config);
|
|
}
|