Implement Percentage support for gap styles (#1643)
Summary: X-link: https://github.com/facebook/react-native/pull/44067 X-link: https://github.com/facebook/litho/pull/980 Pull Request resolved: https://github.com/facebook/yoga/pull/1643 Changelog [Internal]: - Added percentage value for flex layout gap - Wired up to pass proper available width and height to implement this feature Reviewed By: NickGerleman Differential Revision: D56002340 fbshipit-source-id: c0bc86ac70a1391f115c87da99c2ef411535f68b
This commit is contained in:
committed by
Facebook GitHub Bot
parent
d4247d65c0
commit
cd4a1b8cf6
@@ -29,7 +29,7 @@ TEST(Style, computed_border_is_floored) {
|
||||
TEST(Style, computed_gap_is_floored) {
|
||||
yoga::Style style;
|
||||
style.setGap(Gutter::Column, value::points(-1.0f));
|
||||
auto gapBetweenColumns = style.computeGapForAxis(FlexDirection::Row);
|
||||
auto gapBetweenColumns = style.computeGapForAxis(FlexDirection::Row, 0.0);
|
||||
ASSERT_EQ(gapBetweenColumns, 0.0f);
|
||||
}
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* clang-format off
|
||||
* @generated SignedSource<<708ff5088d96b0a989669c1d86006e37>>
|
||||
* @generated SignedSource<<74302d39e18c0539a6a9f75d1dcd3fd3>>
|
||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGGapTest.html
|
||||
*/
|
||||
|
||||
@@ -2225,3 +2225,932 @@ TEST(YogaTest, row_gap_determines_parent_height) {
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_wrapping) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetFlexWrap(root, YGWrapWrap);
|
||||
YGNodeStyleSetPadding(root, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeTop, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeRight, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root, 300);
|
||||
YGNodeStyleSetHeight(root, 700);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child0, 100);
|
||||
YGNodeStyleSetHeight(root_child0, 100);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child1, 100);
|
||||
YGNodeStyleSetHeight(root_child1, 100);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child2, 100);
|
||||
YGNodeStyleSetHeight(root_child2, 100);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
|
||||
const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child3, 100);
|
||||
YGNodeStyleSetHeight(root_child3, 100);
|
||||
YGNodeInsertChild(root, root_child3, 3);
|
||||
|
||||
const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child4, 100);
|
||||
YGNodeStyleSetHeight(root_child4, 100);
|
||||
YGNodeInsertChild(root, root_child4, 4);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(138, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(138, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(346, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(346, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_determines_parent_height) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetFlexWrap(root, YGWrapWrap);
|
||||
YGNodeStyleSetWidth(root, 300);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child0, 100);
|
||||
YGNodeStyleSetHeight(root_child0, 100);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child1, 100);
|
||||
YGNodeStyleSetHeight(root_child1, 100);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child2, 100);
|
||||
YGNodeStyleSetHeight(root_child2, 100);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
|
||||
const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child3, 100);
|
||||
YGNodeStyleSetHeight(root_child3, 100);
|
||||
YGNodeInsertChild(root, root_child3, 3);
|
||||
|
||||
const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child4, 100);
|
||||
YGNodeStyleSetHeight(root_child4, 100);
|
||||
YGNodeInsertChild(root, root_child4, 4);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(300, 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(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(130, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(130, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_wrapping_with_both_content_padding_and_item_padding) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetFlexWrap(root, YGWrapWrap);
|
||||
YGNodeStyleSetPadding(root, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeTop, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeRight, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root, 300);
|
||||
YGNodeStyleSetHeight(root, 700);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetPadding(root_child0, YGEdgeTop, 10);
|
||||
YGNodeStyleSetPadding(root_child0, YGEdgeRight, 10);
|
||||
YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root_child0, 100);
|
||||
YGNodeStyleSetHeight(root_child0, 100);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const 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);
|
||||
YGNodeStyleSetWidth(root_child1, 100);
|
||||
YGNodeStyleSetHeight(root_child1, 100);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetPadding(root_child2, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetPadding(root_child2, YGEdgeTop, 10);
|
||||
YGNodeStyleSetPadding(root_child2, YGEdgeRight, 10);
|
||||
YGNodeStyleSetPadding(root_child2, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root_child2, 100);
|
||||
YGNodeStyleSetHeight(root_child2, 100);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
|
||||
const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetPadding(root_child3, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetPadding(root_child3, YGEdgeTop, 10);
|
||||
YGNodeStyleSetPadding(root_child3, YGEdgeRight, 10);
|
||||
YGNodeStyleSetPadding(root_child3, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root_child3, 100);
|
||||
YGNodeStyleSetHeight(root_child3, 100);
|
||||
YGNodeInsertChild(root, root_child3, 3);
|
||||
|
||||
const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetPadding(root_child4, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetPadding(root_child4, YGEdgeTop, 10);
|
||||
YGNodeStyleSetPadding(root_child4, YGEdgeRight, 10);
|
||||
YGNodeStyleSetPadding(root_child4, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root_child4, 100);
|
||||
YGNodeStyleSetHeight(root_child4, 100);
|
||||
YGNodeInsertChild(root, root_child4, 4);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(138, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(138, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(346, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(346, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_wrapping_with_both_content_padding) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetFlexWrap(root, YGWrapWrap);
|
||||
YGNodeStyleSetPadding(root, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeTop, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeRight, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root, 300);
|
||||
YGNodeStyleSetHeight(root, 700);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child0, 100);
|
||||
YGNodeStyleSetHeight(root_child0, 100);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child1, 100);
|
||||
YGNodeStyleSetHeight(root_child1, 100);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child2, 100);
|
||||
YGNodeStyleSetHeight(root_child2, 100);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
|
||||
const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child3, 100);
|
||||
YGNodeStyleSetHeight(root_child3, 100);
|
||||
YGNodeInsertChild(root, root_child3, 3);
|
||||
|
||||
const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child4, 100);
|
||||
YGNodeStyleSetHeight(root_child4, 100);
|
||||
YGNodeInsertChild(root, root_child4, 4);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(138, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(138, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(346, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(346, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_wrapping_with_content_margin) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetFlexWrap(root, YGWrapWrap);
|
||||
YGNodeStyleSetMargin(root, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetMargin(root, YGEdgeTop, 10);
|
||||
YGNodeStyleSetMargin(root, YGEdgeRight, 10);
|
||||
YGNodeStyleSetMargin(root, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root, 300);
|
||||
YGNodeStyleSetHeight(root, 700);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child0, 100);
|
||||
YGNodeStyleSetHeight(root_child0, 100);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child1, 100);
|
||||
YGNodeStyleSetHeight(root_child1, 100);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child2, 100);
|
||||
YGNodeStyleSetHeight(root_child2, 100);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
|
||||
const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child3, 100);
|
||||
YGNodeStyleSetHeight(root_child3, 100);
|
||||
YGNodeInsertChild(root, root_child3, 3);
|
||||
|
||||
const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child4, 100);
|
||||
YGNodeStyleSetHeight(root_child4, 100);
|
||||
YGNodeInsertChild(root, root_child4, 4);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, 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(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(130, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(170, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(130, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(170, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(340, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(170, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(170, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(340, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_wrapping_with_content_margin_and_padding) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetFlexWrap(root, YGWrapWrap);
|
||||
YGNodeStyleSetMargin(root, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetMargin(root, YGEdgeTop, 10);
|
||||
YGNodeStyleSetMargin(root, YGEdgeRight, 10);
|
||||
YGNodeStyleSetMargin(root, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeTop, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeRight, 10);
|
||||
YGNodeStyleSetPadding(root, YGEdgeBottom, 10);
|
||||
YGNodeStyleSetWidth(root, 300);
|
||||
YGNodeStyleSetHeight(root, 700);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child0, 100);
|
||||
YGNodeStyleSetHeight(root_child0, 100);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child1, 100);
|
||||
YGNodeStyleSetHeight(root_child1, 100);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child2, 100);
|
||||
YGNodeStyleSetHeight(root_child2, 100);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
|
||||
const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child3, 100);
|
||||
YGNodeStyleSetHeight(root_child3, 100);
|
||||
YGNodeInsertChild(root, root_child3, 3);
|
||||
|
||||
const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child4, 100);
|
||||
YGNodeStyleSetHeight(root_child4, 100);
|
||||
YGNodeInsertChild(root, root_child4, 4);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(138, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(138, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(346, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(700, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(62, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(178, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(190, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(346, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_wrapping_with_flexible_content) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetWidth(root, 300);
|
||||
YGNodeStyleSetHeight(root, 300);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexGrow(root_child0, 1);
|
||||
YGNodeStyleSetFlexShrink(root_child0, 1);
|
||||
YGNodeStyleSetFlexBasisPercent(root_child0, 0);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexGrow(root_child1, 1);
|
||||
YGNodeStyleSetFlexShrink(root_child1, 1);
|
||||
YGNodeStyleSetFlexBasisPercent(root_child1, 0);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexGrow(root_child2, 1);
|
||||
YGNodeStyleSetFlexShrink(root_child2, 1);
|
||||
YGNodeStyleSetFlexBasisPercent(root_child2, 0);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(110, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(220, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(220, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(110, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(80, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_wrapping_with_mixed_flexible_content) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetWidth(root, 300);
|
||||
YGNodeStyleSetHeight(root, 300);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child0, 10);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexGrow(root_child1, 1);
|
||||
YGNodeStyleSetFlexShrink(root_child1, 1);
|
||||
YGNodeStyleSetFlexBasisPercent(root_child1, 0);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidthPercent(root_child2, 10);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(40, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(270, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(30, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(290, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(60, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(30, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, row_gap_percent_wrapping_with_min_width) {
|
||||
GTEST_SKIP();
|
||||
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetFlexWrap(root, YGWrapWrap);
|
||||
YGNodeStyleSetMinWidth(root, 300);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterColumn, 10);
|
||||
YGNodeStyleSetGapPercent(root, YGGutterRow, 10);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child0, 100);
|
||||
YGNodeStyleSetHeight(root_child0, 100);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child1, 100);
|
||||
YGNodeStyleSetHeight(root_child1, 100);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child2, 100);
|
||||
YGNodeStyleSetHeight(root_child2, 100);
|
||||
YGNodeInsertChild(root, root_child2, 2);
|
||||
|
||||
const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child3, 100);
|
||||
YGNodeStyleSetHeight(root_child3, 100);
|
||||
YGNodeInsertChild(root, root_child3, 3);
|
||||
|
||||
const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetWidth(root_child4, 100);
|
||||
YGNodeStyleSetHeight(root_child4, 100);
|
||||
YGNodeInsertChild(root, root_child4, 4);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(300, 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(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(130, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(130, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child2));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2));
|
||||
|
||||
ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child3));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child3));
|
||||
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child4));
|
||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetTop(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child4));
|
||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child4));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
Reference in New Issue
Block a user