/* * 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. * * clang-format off * @generated SignedSource<<56d0eec106ade0bbd034067594249c76>> * generated by gentest/gentest-driver.ts from gentest/fixtures/YGBoxSizingTest.html */ #include #include #include "../util/TestUtil.h" TEST(YogaTest, box_sizing_content_box_simple) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 5); YGNodeStyleSetPadding(root, YGEdgeTop, 5); YGNodeStyleSetPadding(root, YGEdgeRight, 5); YGNodeStyleSetPadding(root, YGEdgeBottom, 5); YGNodeStyleSetBorder(root, YGEdgeLeft, 10); YGNodeStyleSetBorder(root, YGEdgeTop, 10); YGNodeStyleSetBorder(root, YGEdgeRight, 10); YGNodeStyleSetBorder(root, YGEdgeBottom, 10); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeStyleSetBoxSizing(root, YGBoxSizingContentBox); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(130, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(130, YGNodeLayoutGetHeight(root)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(130, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(130, YGNodeLayoutGetHeight(root)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 5); YGNodeStyleSetPadding(root, YGEdgeTop, 5); YGNodeStyleSetPadding(root, YGEdgeRight, 5); YGNodeStyleSetPadding(root, YGEdgeBottom, 5); YGNodeStyleSetBorder(root, YGEdgeLeft, 10); YGNodeStyleSetBorder(root, YGEdgeTop, 10); YGNodeStyleSetBorder(root, YGEdgeRight, 10); YGNodeStyleSetBorder(root, YGEdgeBottom, 10); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_padding_only) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 5); YGNodeStyleSetPadding(root, YGEdgeTop, 5); YGNodeStyleSetPadding(root, YGEdgeRight, 5); YGNodeStyleSetPadding(root, YGEdgeBottom, 5); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeStyleSetBoxSizing(root, YGBoxSizingContentBox); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(110, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(110, YGNodeLayoutGetHeight(root)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(110, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(110, YGNodeLayoutGetHeight(root)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_padding_only) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 5); YGNodeStyleSetPadding(root, YGEdgeTop, 5); YGNodeStyleSetPadding(root, YGEdgeRight, 5); YGNodeStyleSetPadding(root, YGEdgeBottom, 5); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_border_only) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetBorder(root, YGEdgeLeft, 10); YGNodeStyleSetBorder(root, YGEdgeTop, 10); YGNodeStyleSetBorder(root, YGEdgeRight, 10); YGNodeStyleSetBorder(root, YGEdgeBottom, 10); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeStyleSetBoxSizing(root, YGBoxSizingContentBox); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(120, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(120, YGNodeLayoutGetHeight(root)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(120, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(120, YGNodeLayoutGetHeight(root)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_border_only) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetBorder(root, YGEdgeLeft, 10); YGNodeStyleSetBorder(root, YGEdgeTop, 10); YGNodeStyleSetBorder(root, YGEdgeRight, 10); YGNodeStyleSetBorder(root, YGEdgeBottom, 10); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_no_padding_no_border) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeStyleSetBoxSizing(root, YGBoxSizingContentBox); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_no_padding_no_border) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_children) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 5); YGNodeStyleSetPadding(root, YGEdgeTop, 5); YGNodeStyleSetPadding(root, YGEdgeRight, 5); YGNodeStyleSetPadding(root, YGEdgeBottom, 5); YGNodeStyleSetBorder(root, YGEdgeLeft, 10); YGNodeStyleSetBorder(root, YGEdgeTop, 10); YGNodeStyleSetBorder(root, YGEdgeRight, 10); YGNodeStyleSetBorder(root, YGEdgeBottom, 10); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeStyleSetBoxSizing(root, YGBoxSizingContentBox); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child0, 25); YGNodeStyleSetHeight(root_child0, 25); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeRef root_child2 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child2, 25); YGNodeStyleSetHeight(root_child2, 25); YGNodeInsertChild(root, root_child2, 2); YGNodeRef root_child3 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child3, 25); YGNodeStyleSetHeight(root_child3, 25); YGNodeInsertChild(root, root_child3, 3); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(130, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(130, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child2)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child2)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child3)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child3)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(130, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(130, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child2)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child2)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child3)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child3)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_children) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 5); YGNodeStyleSetPadding(root, YGEdgeTop, 5); YGNodeStyleSetPadding(root, YGEdgeRight, 5); YGNodeStyleSetPadding(root, YGEdgeBottom, 5); YGNodeStyleSetBorder(root, YGEdgeLeft, 10); YGNodeStyleSetBorder(root, YGEdgeTop, 10); YGNodeStyleSetBorder(root, YGEdgeRight, 10); YGNodeStyleSetBorder(root, YGEdgeBottom, 10); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child0, 25); YGNodeStyleSetHeight(root_child0, 25); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeRef root_child2 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child2, 25); YGNodeStyleSetHeight(root_child2, 25); YGNodeInsertChild(root, root_child2, 2); YGNodeRef root_child3 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child3, 25); YGNodeStyleSetHeight(root_child3, 25); YGNodeInsertChild(root, root_child3, 3); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child2)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child2)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetLeft(root_child3)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child3)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(15, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetLeft(root_child2)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child2)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetLeft(root_child3)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child3)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_siblings) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child0, 25); YGNodeStyleSetHeight(root_child0, 25); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child1, YGEdgeLeft, 10); YGNodeStyleSetPadding(root_child1, YGEdgeTop, 10); YGNodeStyleSetPadding(root_child1, YGEdgeRight, 10); YGNodeStyleSetPadding(root_child1, YGEdgeBottom, 10); YGNodeStyleSetBorder(root_child1, YGEdgeLeft, 10); YGNodeStyleSetBorder(root_child1, YGEdgeTop, 10); YGNodeStyleSetBorder(root_child1, YGEdgeRight, 10); YGNodeStyleSetBorder(root_child1, YGEdgeBottom, 10); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeStyleSetBoxSizing(root_child1, YGBoxSizingContentBox); YGNodeInsertChild(root, root_child1, 1); YGNodeRef root_child2 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child2, 25); YGNodeStyleSetHeight(root_child2, 25); YGNodeInsertChild(root, root_child2, 2); YGNodeRef root_child3 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child3, 25); YGNodeStyleSetHeight(root_child3, 25); YGNodeInsertChild(root, root_child3, 3); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetHeight(root_child1)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child2)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3)); ASSERT_FLOAT_EQ(115, YGNodeLayoutGetTop(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child3)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(35, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetHeight(root_child1)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child2)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child2)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child3)); ASSERT_FLOAT_EQ(115, YGNodeLayoutGetTop(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child3)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_siblings) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child0, 25); YGNodeStyleSetHeight(root_child0, 25); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child1, YGEdgeLeft, 10); YGNodeStyleSetPadding(root_child1, YGEdgeTop, 10); YGNodeStyleSetPadding(root_child1, YGEdgeRight, 10); YGNodeStyleSetPadding(root_child1, YGEdgeBottom, 10); YGNodeStyleSetBorder(root_child1, YGEdgeLeft, 10); YGNodeStyleSetBorder(root_child1, YGEdgeTop, 10); YGNodeStyleSetBorder(root_child1, YGEdgeRight, 10); YGNodeStyleSetBorder(root_child1, YGEdgeBottom, 10); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeRef root_child2 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child2, 25); YGNodeStyleSetHeight(root_child2, 25); YGNodeInsertChild(root, root_child2, 2); YGNodeRef root_child3 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child3, 25); YGNodeStyleSetHeight(root_child3, 25); YGNodeInsertChild(root, root_child3, 3); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child1)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child2)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child3)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child3)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child1)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child2)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child2)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child2)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child3)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child3)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child3)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_max_width) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 5); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 5); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 5); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 5); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 15); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 15); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 15); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 15); YGNodeStyleSetMaxWidth(root_child0, 50); YGNodeStyleSetHeight(root_child0, 25); YGNodeStyleSetBoxSizing(root_child0, YGBoxSizingContentBox); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_max_width) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 5); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 5); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 5); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 5); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 15); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 15); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 15); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 15); YGNodeStyleSetMaxWidth(root_child0, 50); YGNodeStyleSetHeight(root_child0, 25); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_max_height) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 5); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 5); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 5); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 5); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 15); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 15); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 15); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 15); YGNodeStyleSetWidth(root_child0, 50); YGNodeStyleSetMaxHeight(root_child0, 50); YGNodeStyleSetBoxSizing(root_child0, YGBoxSizingContentBox); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_max_height) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 5); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 5); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 5); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 5); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 15); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 15); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 15); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 15); YGNodeStyleSetWidth(root_child0, 50); YGNodeStyleSetMaxHeight(root_child0, 50); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_min_width) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 5); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 5); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 5); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 5); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 15); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 15); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 15); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 15); YGNodeStyleSetMinWidth(root_child0, 50); YGNodeStyleSetHeight(root_child0, 25); YGNodeStyleSetBoxSizing(root_child0, YGBoxSizingContentBox); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_min_width) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 5); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 5); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 5); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 5); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 15); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 15); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 15); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 15); YGNodeStyleSetMinWidth(root_child0, 50); YGNodeStyleSetHeight(root_child0, 25); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_min_height) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 5); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 5); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 5); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 5); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 15); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 15); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 15); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 15); YGNodeStyleSetWidth(root_child0, 50); YGNodeStyleSetMinHeight(root_child0, 50); YGNodeStyleSetBoxSizing(root_child0, YGBoxSizingContentBox); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(90, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_min_height) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 5); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 5); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 5); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 5); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 15); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 15); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 15); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 15); YGNodeStyleSetWidth(root_child0, 50); YGNodeStyleSetMinHeight(root_child0, 50); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1, 25); YGNodeStyleSetHeight(root_child1, 25); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(75, YGNodeLayoutGetLeft(root_child1)); ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetWidth(root_child1)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child1)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_no_height_no_width) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 2); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 2); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 2); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 2); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 7); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 7); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 7); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 7); YGNodeStyleSetBoxSizing(root_child0, YGBoxSizingContentBox); YGNodeInsertChild(root, root_child0, 0); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetHeight(root_child0)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetHeight(root_child0)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_no_height_no_width) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 2); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 2); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 2); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 2); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 7); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 7); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 7); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 7); YGNodeInsertChild(root, root_child0, 0); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetHeight(root_child0)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetHeight(root_child0)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_nested) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 15); YGNodeStyleSetPadding(root, YGEdgeTop, 15); YGNodeStyleSetPadding(root, YGEdgeRight, 15); YGNodeStyleSetPadding(root, YGEdgeBottom, 15); YGNodeStyleSetBorder(root, YGEdgeLeft, 3); YGNodeStyleSetBorder(root, YGEdgeTop, 3); YGNodeStyleSetBorder(root, YGEdgeRight, 3); YGNodeStyleSetBorder(root, YGEdgeBottom, 3); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeStyleSetBoxSizing(root, YGBoxSizingContentBox); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 2); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 2); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 2); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 2); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 7); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 7); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 7); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 7); YGNodeStyleSetWidth(root_child0, 20); YGNodeStyleSetHeight(root_child0, 20); YGNodeStyleSetBoxSizing(root_child0, YGBoxSizingContentBox); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0_child0, YGEdgeLeft, 1); YGNodeStyleSetPadding(root_child0_child0, YGEdgeTop, 1); YGNodeStyleSetPadding(root_child0_child0, YGEdgeRight, 1); YGNodeStyleSetPadding(root_child0_child0, YGEdgeBottom, 1); YGNodeStyleSetBorder(root_child0_child0, YGEdgeLeft, 2); YGNodeStyleSetBorder(root_child0_child0, YGEdgeTop, 2); YGNodeStyleSetBorder(root_child0_child0, YGEdgeRight, 2); YGNodeStyleSetBorder(root_child0_child0, YGEdgeBottom, 2); YGNodeStyleSetWidth(root_child0_child0, 10); YGNodeStyleSetHeight(root_child0_child0, 5); YGNodeStyleSetBoxSizing(root_child0_child0, YGBoxSizingContentBox); YGNodeInsertChild(root_child0, root_child0_child0, 0); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(136, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(136, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(38, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(38, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetLeft(root_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetTop(root_child0_child0)); ASSERT_FLOAT_EQ(16, YGNodeLayoutGetWidth(root_child0_child0)); ASSERT_FLOAT_EQ(11, YGNodeLayoutGetHeight(root_child0_child0)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(136, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(136, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(38, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(38, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(13, YGNodeLayoutGetLeft(root_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetTop(root_child0_child0)); ASSERT_FLOAT_EQ(16, YGNodeLayoutGetWidth(root_child0_child0)); ASSERT_FLOAT_EQ(11, YGNodeLayoutGetHeight(root_child0_child0)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_nested) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 15); YGNodeStyleSetPadding(root, YGEdgeTop, 15); YGNodeStyleSetPadding(root, YGEdgeRight, 15); YGNodeStyleSetPadding(root, YGEdgeBottom, 15); YGNodeStyleSetBorder(root, YGEdgeLeft, 3); YGNodeStyleSetBorder(root, YGEdgeTop, 3); YGNodeStyleSetBorder(root, YGEdgeRight, 3); YGNodeStyleSetBorder(root, YGEdgeBottom, 3); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 2); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 2); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 2); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 2); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 7); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 7); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 7); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 7); YGNodeStyleSetWidth(root_child0, 20); YGNodeStyleSetHeight(root_child0, 20); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0_child0, YGEdgeLeft, 1); YGNodeStyleSetPadding(root_child0_child0, YGEdgeTop, 1); YGNodeStyleSetPadding(root_child0_child0, YGEdgeRight, 1); YGNodeStyleSetPadding(root_child0_child0, YGEdgeBottom, 1); YGNodeStyleSetBorder(root_child0_child0, YGEdgeLeft, 2); YGNodeStyleSetBorder(root_child0_child0, YGEdgeTop, 2); YGNodeStyleSetBorder(root_child0_child0, YGEdgeRight, 2); YGNodeStyleSetBorder(root_child0_child0, YGEdgeBottom, 2); YGNodeStyleSetWidth(root_child0_child0, 10); YGNodeStyleSetHeight(root_child0_child0, 5); YGNodeInsertChild(root_child0, root_child0_child0, 0); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetLeft(root_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetTop(root_child0_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); ASSERT_FLOAT_EQ(6, YGNodeLayoutGetHeight(root_child0_child0)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(18, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(1, YGNodeLayoutGetLeft(root_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetTop(root_child0_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); ASSERT_FLOAT_EQ(6, YGNodeLayoutGetHeight(root_child0_child0)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_content_box_nested_alternating) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 3); YGNodeStyleSetPadding(root, YGEdgeTop, 3); YGNodeStyleSetPadding(root, YGEdgeRight, 3); YGNodeStyleSetPadding(root, YGEdgeBottom, 3); YGNodeStyleSetBorder(root, YGEdgeLeft, 2); YGNodeStyleSetBorder(root, YGEdgeTop, 2); YGNodeStyleSetBorder(root, YGEdgeRight, 2); YGNodeStyleSetBorder(root, YGEdgeBottom, 2); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeStyleSetBoxSizing(root, YGBoxSizingContentBox); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 8); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 8); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 8); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 8); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 2); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 2); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 2); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 2); YGNodeStyleSetWidth(root_child0, 40); YGNodeStyleSetHeight(root_child0, 40); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0_child0, YGEdgeLeft, 3); YGNodeStyleSetPadding(root_child0_child0, YGEdgeTop, 3); YGNodeStyleSetPadding(root_child0_child0, YGEdgeRight, 3); YGNodeStyleSetPadding(root_child0_child0, YGEdgeBottom, 3); YGNodeStyleSetBorder(root_child0_child0, YGEdgeLeft, 6); YGNodeStyleSetBorder(root_child0_child0, YGEdgeTop, 6); YGNodeStyleSetBorder(root_child0_child0, YGEdgeRight, 6); YGNodeStyleSetBorder(root_child0_child0, YGEdgeBottom, 6); YGNodeStyleSetWidth(root_child0_child0, 20); YGNodeStyleSetHeight(root_child0_child0, 25); YGNodeStyleSetBoxSizing(root_child0_child0, YGBoxSizingContentBox); YGNodeInsertChild(root_child0, root_child0_child0, 0); YGNodeRef root_child0_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0_child0_child0, YGEdgeLeft, 1); YGNodeStyleSetPadding(root_child0_child0_child0, YGEdgeTop, 1); YGNodeStyleSetPadding(root_child0_child0_child0, YGEdgeRight, 1); YGNodeStyleSetPadding(root_child0_child0_child0, YGEdgeBottom, 1); YGNodeStyleSetBorder(root_child0_child0_child0, YGEdgeLeft, 1); YGNodeStyleSetBorder(root_child0_child0_child0, YGEdgeTop, 1); YGNodeStyleSetBorder(root_child0_child0_child0, YGEdgeRight, 1); YGNodeStyleSetBorder(root_child0_child0_child0, YGEdgeBottom, 1); YGNodeStyleSetWidth(root_child0_child0_child0, 10); YGNodeStyleSetHeight(root_child0_child0_child0, 5); YGNodeInsertChild(root_child0_child0, root_child0_child0_child0, 0); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(110, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(110, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(5, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(5, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0_child0)); ASSERT_FLOAT_EQ(38, YGNodeLayoutGetWidth(root_child0_child0)); ASSERT_FLOAT_EQ(43, YGNodeLayoutGetHeight(root_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetLeft(root_child0_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetTop(root_child0_child0_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0_child0)); ASSERT_FLOAT_EQ(5, YGNodeLayoutGetHeight(root_child0_child0_child0)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(110, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(110, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(65, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(5, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(40, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(-8, YGNodeLayoutGetLeft(root_child0_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0_child0)); ASSERT_FLOAT_EQ(38, YGNodeLayoutGetWidth(root_child0_child0)); ASSERT_FLOAT_EQ(43, YGNodeLayoutGetHeight(root_child0_child0)); ASSERT_FLOAT_EQ(19, YGNodeLayoutGetLeft(root_child0_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetTop(root_child0_child0_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0_child0)); ASSERT_FLOAT_EQ(5, YGNodeLayoutGetHeight(root_child0_child0_child0)); YGNodeFreeRecursive(root); YGConfigFree(config); } TEST(YogaTest, box_sizing_border_box_nested_alternating) { YGConfigRef config = YGConfigNew(); YGNodeRef root = YGNodeNewWithConfig(config); YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute); YGNodeStyleSetPadding(root, YGEdgeLeft, 3); YGNodeStyleSetPadding(root, YGEdgeTop, 3); YGNodeStyleSetPadding(root, YGEdgeRight, 3); YGNodeStyleSetPadding(root, YGEdgeBottom, 3); YGNodeStyleSetBorder(root, YGEdgeLeft, 2); YGNodeStyleSetBorder(root, YGEdgeTop, 2); YGNodeStyleSetBorder(root, YGEdgeRight, 2); YGNodeStyleSetBorder(root, YGEdgeBottom, 2); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNodeRef root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 8); YGNodeStyleSetPadding(root_child0, YGEdgeTop, 8); YGNodeStyleSetPadding(root_child0, YGEdgeRight, 8); YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 8); YGNodeStyleSetBorder(root_child0, YGEdgeLeft, 2); YGNodeStyleSetBorder(root_child0, YGEdgeTop, 2); YGNodeStyleSetBorder(root_child0, YGEdgeRight, 2); YGNodeStyleSetBorder(root_child0, YGEdgeBottom, 2); YGNodeStyleSetWidth(root_child0, 40); YGNodeStyleSetHeight(root_child0, 40); YGNodeStyleSetBoxSizing(root_child0, YGBoxSizingContentBox); YGNodeInsertChild(root, root_child0, 0); YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0_child0, YGEdgeLeft, 3); YGNodeStyleSetPadding(root_child0_child0, YGEdgeTop, 3); YGNodeStyleSetPadding(root_child0_child0, YGEdgeRight, 3); YGNodeStyleSetPadding(root_child0_child0, YGEdgeBottom, 3); YGNodeStyleSetBorder(root_child0_child0, YGEdgeLeft, 6); YGNodeStyleSetBorder(root_child0_child0, YGEdgeTop, 6); YGNodeStyleSetBorder(root_child0_child0, YGEdgeRight, 6); YGNodeStyleSetBorder(root_child0_child0, YGEdgeBottom, 6); YGNodeStyleSetWidth(root_child0_child0, 20); YGNodeStyleSetHeight(root_child0_child0, 25); YGNodeInsertChild(root_child0, root_child0_child0, 0); YGNodeRef root_child0_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetPadding(root_child0_child0_child0, YGEdgeLeft, 1); YGNodeStyleSetPadding(root_child0_child0_child0, YGEdgeTop, 1); YGNodeStyleSetPadding(root_child0_child0_child0, YGEdgeRight, 1); YGNodeStyleSetPadding(root_child0_child0_child0, YGEdgeBottom, 1); YGNodeStyleSetBorder(root_child0_child0_child0, YGEdgeLeft, 1); YGNodeStyleSetBorder(root_child0_child0_child0, YGEdgeTop, 1); YGNodeStyleSetBorder(root_child0_child0_child0, YGEdgeRight, 1); YGNodeStyleSetBorder(root_child0_child0_child0, YGEdgeBottom, 1); YGNodeStyleSetWidth(root_child0_child0_child0, 10); YGNodeStyleSetHeight(root_child0_child0_child0, 5); YGNodeStyleSetBoxSizing(root_child0_child0_child0, YGBoxSizingContentBox); YGNodeInsertChild(root_child0_child0, root_child0_child0_child0, 0); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(5, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(5, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0_child0)); ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetLeft(root_child0_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetTop(root_child0_child0_child0)); ASSERT_FLOAT_EQ(14, YGNodeLayoutGetWidth(root_child0_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetHeight(root_child0_child0_child0)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); ASSERT_FLOAT_EQ(35, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(5, YGNodeLayoutGetTop(root_child0)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(60, YGNodeLayoutGetHeight(root_child0)); ASSERT_FLOAT_EQ(30, YGNodeLayoutGetLeft(root_child0_child0)); ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0_child0)); ASSERT_FLOAT_EQ(20, YGNodeLayoutGetWidth(root_child0_child0)); ASSERT_FLOAT_EQ(25, YGNodeLayoutGetHeight(root_child0_child0)); ASSERT_FLOAT_EQ(-3, YGNodeLayoutGetLeft(root_child0_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetTop(root_child0_child0_child0)); ASSERT_FLOAT_EQ(14, YGNodeLayoutGetWidth(root_child0_child0_child0)); ASSERT_FLOAT_EQ(9, YGNodeLayoutGetHeight(root_child0_child0_child0)); YGNodeFreeRecursive(root); YGConfigFree(config); }