From 0616714bd3858ebb506c1923ad5b3dba14383648 Mon Sep 17 00:00:00 2001 From: Joe Vilches Date: Wed, 18 Oct 2023 11:29:25 -0700 Subject: [PATCH] Fix row-reverse flex direction fixtures Summary: These tests were a bit weird for testing something with position. The gentest setup makes it so that the fixtures are wrapped in a absolutely positioned container with height and width bot 0. However, the generated yoga tests do NOT do this and instead have the root node as the fixture itself with no wrapping container. This causes a problem when testing left/right/top/bottom position insets. Because left/right/top/bottom will position the element relative to its containing block when position is absolute, we will get different values on yoga and chrome even if the implementation is correct: https://developer.mozilla.org/en-US/docs/Web/CSS/right#description To fix this, we just wrap the fixture in a set size div that is also absolutely positioned. The file was also formatted. Reviewed By: NickGerleman Differential Revision: D50389229 --- gentest/fixtures/YGFlexDirectionTest.html | 114 +++-- .../facebook/yoga/YGFlexDirectionTest.java | 472 ++++++++++------- .../generated/YGFlexDirectionTest.test.ts | 474 +++++++++++------- tests/generated/YGFlexDirectionTest.cpp | 474 +++++++++++------- 4 files changed, 914 insertions(+), 620 deletions(-) diff --git a/gentest/fixtures/YGFlexDirectionTest.html b/gentest/fixtures/YGFlexDirectionTest.html index 10f4eeed23..4c103060cf 100644 --- a/gentest/fixtures/YGFlexDirectionTest.html +++ b/gentest/fixtures/YGFlexDirectionTest.html @@ -34,147 +34,177 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
diff --git a/java/tests/com/facebook/yoga/YGFlexDirectionTest.java b/java/tests/com/facebook/yoga/YGFlexDirectionTest.java index ecb49c226d..129039534d 100644 --- a/java/tests/com/facebook/yoga/YGFlexDirectionTest.java +++ b/java/tests/com/facebook/yoga/YGFlexDirectionTest.java @@ -1678,137 +1678,166 @@ public void test_flex_direction_row_reverse_pos_left() { config.setExperimentalFeatureEnabled(YogaExperimentalFeature.ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE, true); final YogaNode root = createNode(config); - root.setFlexDirection(YogaFlexDirection.ROW_REVERSE); - root.setPosition(YogaEdge.LEFT, 100f); root.setWidth(100f); root.setHeight(100f); final YogaNode root_child0 = createNode(config); - root_child0.setWidth(10f); + root_child0.setFlexDirection(YogaFlexDirection.ROW_REVERSE); + root_child0.setPosition(YogaEdge.LEFT, 100f); + root_child0.setWidth(100f); + root_child0.setHeight(100f); root.addChildAt(root_child0, 0); - final YogaNode root_child1 = createNode(config); - root_child1.setWidth(10f); - root.addChildAt(root_child1, 1); + final YogaNode root_child0_child0 = createNode(config); + root_child0_child0.setWidth(10f); + root_child0.addChildAt(root_child0_child0, 0); - final YogaNode root_child2 = createNode(config); - root_child2.setWidth(10f); - root.addChildAt(root_child2, 2); + final YogaNode root_child0_child1 = createNode(config); + root_child0_child1.setWidth(10f); + root_child0.addChildAt(root_child0_child1, 1); + + final YogaNode root_child0_child2 = createNode(config); + root_child0_child2.setWidth(10f); + root_child0.addChildAt(root_child0_child2, 2); root.setDirection(YogaDirection.LTR); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); - assertEquals(100f, root.getLayoutX(), 0.0f); + assertEquals(0f, root.getLayoutX(), 0.0f); assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child0.getLayoutX(), 0.0f); + assertEquals(100f, root_child0.getLayoutX(), 0.0f); assertEquals(0f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(80f, root_child1.getLayoutX(), 0.0f); - assertEquals(0f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(90f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(70f, root_child2.getLayoutX(), 0.0f); - assertEquals(0f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(80f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(70f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutHeight(), 0.0f); root.setDirection(YogaDirection.RTL); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); - assertEquals(100f, root.getLayoutX(), 0.0f); + assertEquals(0f, root.getLayoutX(), 0.0f); assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(0f, root_child0.getLayoutX(), 0.0f); + assertEquals(100f, root_child0.getLayoutX(), 0.0f); assertEquals(0f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(10f, root_child1.getLayoutX(), 0.0f); - assertEquals(0f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(20f, root_child2.getLayoutX(), 0.0f); - assertEquals(0f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(20f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutHeight(), 0.0f); } @Test - @Ignore public void test_flex_direction_row_reverse_pos_start() { YogaConfig config = YogaConfigFactory.create(); config.setExperimentalFeatureEnabled(YogaExperimentalFeature.ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE, true); final YogaNode root = createNode(config); - root.setFlexDirection(YogaFlexDirection.ROW_REVERSE); - root.setPosition(YogaEdge.START, 100f); root.setWidth(100f); root.setHeight(100f); final YogaNode root_child0 = createNode(config); - root_child0.setWidth(10f); + root_child0.setFlexDirection(YogaFlexDirection.ROW_REVERSE); + root_child0.setPosition(YogaEdge.START, 100f); + root_child0.setWidth(100f); + root_child0.setHeight(100f); root.addChildAt(root_child0, 0); - final YogaNode root_child1 = createNode(config); - root_child1.setWidth(10f); - root.addChildAt(root_child1, 1); + final YogaNode root_child0_child0 = createNode(config); + root_child0_child0.setWidth(10f); + root_child0.addChildAt(root_child0_child0, 0); - final YogaNode root_child2 = createNode(config); - root_child2.setWidth(10f); - root.addChildAt(root_child2, 2); + final YogaNode root_child0_child1 = createNode(config); + root_child0_child1.setWidth(10f); + root_child0.addChildAt(root_child0_child1, 1); + + final YogaNode root_child0_child2 = createNode(config); + root_child0_child2.setWidth(10f); + root_child0.addChildAt(root_child0_child2, 2); root.setDirection(YogaDirection.LTR); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); - assertEquals(100f, root.getLayoutX(), 0.0f); + assertEquals(0f, root.getLayoutX(), 0.0f); assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child0.getLayoutX(), 0.0f); + assertEquals(100f, root_child0.getLayoutX(), 0.0f); assertEquals(0f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(80f, root_child1.getLayoutX(), 0.0f); - assertEquals(0f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(90f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(70f, root_child2.getLayoutX(), 0.0f); - assertEquals(0f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(80f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(70f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutHeight(), 0.0f); root.setDirection(YogaDirection.RTL); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); - assertEquals(-200f, root.getLayoutX(), 0.0f); + assertEquals(0f, root.getLayoutX(), 0.0f); assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(0f, root_child0.getLayoutX(), 0.0f); + assertEquals(-100f, root_child0.getLayoutX(), 0.0f); assertEquals(0f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(10f, root_child1.getLayoutX(), 0.0f); - assertEquals(0f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(20f, root_child2.getLayoutX(), 0.0f); - assertEquals(0f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(20f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutHeight(), 0.0f); } @Test @@ -1818,137 +1847,166 @@ public void test_flex_direction_row_reverse_pos_right() { config.setExperimentalFeatureEnabled(YogaExperimentalFeature.ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE, true); final YogaNode root = createNode(config); - root.setFlexDirection(YogaFlexDirection.ROW_REVERSE); - root.setPosition(YogaEdge.RIGHT, 100f); root.setWidth(100f); root.setHeight(100f); final YogaNode root_child0 = createNode(config); - root_child0.setWidth(10f); + root_child0.setFlexDirection(YogaFlexDirection.ROW_REVERSE); + root_child0.setPosition(YogaEdge.RIGHT, 100f); + root_child0.setWidth(100f); + root_child0.setHeight(100f); root.addChildAt(root_child0, 0); - final YogaNode root_child1 = createNode(config); - root_child1.setWidth(10f); - root.addChildAt(root_child1, 1); + final YogaNode root_child0_child0 = createNode(config); + root_child0_child0.setWidth(10f); + root_child0.addChildAt(root_child0_child0, 0); - final YogaNode root_child2 = createNode(config); - root_child2.setWidth(10f); - root.addChildAt(root_child2, 2); + final YogaNode root_child0_child1 = createNode(config); + root_child0_child1.setWidth(10f); + root_child0.addChildAt(root_child0_child1, 1); + + final YogaNode root_child0_child2 = createNode(config); + root_child0_child2.setWidth(10f); + root_child0.addChildAt(root_child0_child2, 2); root.setDirection(YogaDirection.LTR); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); - assertEquals(-200f, root.getLayoutX(), 0.0f); + assertEquals(0f, root.getLayoutX(), 0.0f); assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child0.getLayoutX(), 0.0f); + assertEquals(-100f, root_child0.getLayoutX(), 0.0f); assertEquals(0f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(80f, root_child1.getLayoutX(), 0.0f); - assertEquals(0f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(90f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(70f, root_child2.getLayoutX(), 0.0f); - assertEquals(0f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(80f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(70f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutHeight(), 0.0f); root.setDirection(YogaDirection.RTL); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); - assertEquals(-200f, root.getLayoutX(), 0.0f); + assertEquals(0f, root.getLayoutX(), 0.0f); assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(0f, root_child0.getLayoutX(), 0.0f); + assertEquals(-100f, root_child0.getLayoutX(), 0.0f); assertEquals(0f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(10f, root_child1.getLayoutX(), 0.0f); - assertEquals(0f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(20f, root_child2.getLayoutX(), 0.0f); - assertEquals(0f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(20f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutHeight(), 0.0f); } @Test - @Ignore public void test_flex_direction_row_reverse_pos_end() { YogaConfig config = YogaConfigFactory.create(); config.setExperimentalFeatureEnabled(YogaExperimentalFeature.ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE, true); final YogaNode root = createNode(config); - root.setFlexDirection(YogaFlexDirection.ROW_REVERSE); - root.setPosition(YogaEdge.END, 100f); root.setWidth(100f); root.setHeight(100f); final YogaNode root_child0 = createNode(config); - root_child0.setWidth(10f); + root_child0.setFlexDirection(YogaFlexDirection.ROW_REVERSE); + root_child0.setPosition(YogaEdge.END, 100f); + root_child0.setWidth(100f); + root_child0.setHeight(100f); root.addChildAt(root_child0, 0); - final YogaNode root_child1 = createNode(config); - root_child1.setWidth(10f); - root.addChildAt(root_child1, 1); + final YogaNode root_child0_child0 = createNode(config); + root_child0_child0.setWidth(10f); + root_child0.addChildAt(root_child0_child0, 0); - final YogaNode root_child2 = createNode(config); - root_child2.setWidth(10f); - root.addChildAt(root_child2, 2); + final YogaNode root_child0_child1 = createNode(config); + root_child0_child1.setWidth(10f); + root_child0.addChildAt(root_child0_child1, 1); + + final YogaNode root_child0_child2 = createNode(config); + root_child0_child2.setWidth(10f); + root_child0.addChildAt(root_child0_child2, 2); root.setDirection(YogaDirection.LTR); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); - assertEquals(-200f, root.getLayoutX(), 0.0f); + assertEquals(0f, root.getLayoutX(), 0.0f); assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child0.getLayoutX(), 0.0f); + assertEquals(-100f, root_child0.getLayoutX(), 0.0f); assertEquals(0f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(80f, root_child1.getLayoutX(), 0.0f); - assertEquals(0f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(90f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(70f, root_child2.getLayoutX(), 0.0f); - assertEquals(0f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(80f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(70f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutHeight(), 0.0f); root.setDirection(YogaDirection.RTL); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); - assertEquals(100f, root.getLayoutX(), 0.0f); + assertEquals(0f, root.getLayoutX(), 0.0f); assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(0f, root_child0.getLayoutX(), 0.0f); + assertEquals(100f, root_child0.getLayoutX(), 0.0f); assertEquals(0f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(10f, root_child1.getLayoutX(), 0.0f); - assertEquals(0f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(20f, root_child2.getLayoutX(), 0.0f); - assertEquals(0f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(100f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(20f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutHeight(), 0.0f); } @Test @@ -1958,67 +2016,82 @@ public void test_flex_direction_column_reverse_pos_top() { config.setExperimentalFeatureEnabled(YogaExperimentalFeature.ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE, true); final YogaNode root = createNode(config); - root.setFlexDirection(YogaFlexDirection.COLUMN_REVERSE); - root.setPosition(YogaEdge.TOP, 100f); root.setWidth(100f); root.setHeight(100f); final YogaNode root_child0 = createNode(config); - root_child0.setWidth(10f); + root_child0.setFlexDirection(YogaFlexDirection.COLUMN_REVERSE); + root_child0.setPosition(YogaEdge.TOP, 100f); + root_child0.setWidth(100f); + root_child0.setHeight(100f); root.addChildAt(root_child0, 0); - final YogaNode root_child1 = createNode(config); - root_child1.setWidth(10f); - root.addChildAt(root_child1, 1); + final YogaNode root_child0_child0 = createNode(config); + root_child0_child0.setWidth(10f); + root_child0.addChildAt(root_child0_child0, 0); - final YogaNode root_child2 = createNode(config); - root_child2.setWidth(10f); - root.addChildAt(root_child2, 2); + final YogaNode root_child0_child1 = createNode(config); + root_child0_child1.setWidth(10f); + root_child0.addChildAt(root_child0_child1, 1); + + final YogaNode root_child0_child2 = createNode(config); + root_child0_child2.setWidth(10f); + root_child0.addChildAt(root_child0_child2, 2); root.setDirection(YogaDirection.LTR); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); assertEquals(0f, root.getLayoutX(), 0.0f); - assertEquals(100f, root.getLayoutY(), 0.0f); + assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); assertEquals(0f, root_child0.getLayoutX(), 0.0f); assertEquals(100f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child0.getLayoutHeight(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(0f, root_child1.getLayoutX(), 0.0f); - assertEquals(100f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(0f, root_child2.getLayoutX(), 0.0f); - assertEquals(100f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(0f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutHeight(), 0.0f); root.setDirection(YogaDirection.RTL); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); assertEquals(0f, root.getLayoutX(), 0.0f); - assertEquals(100f, root.getLayoutY(), 0.0f); + assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child0.getLayoutX(), 0.0f); + assertEquals(0f, root_child0.getLayoutX(), 0.0f); assertEquals(100f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child0.getLayoutHeight(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child1.getLayoutX(), 0.0f); - assertEquals(100f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(90f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child2.getLayoutX(), 0.0f); - assertEquals(100f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(90f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(90f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutHeight(), 0.0f); } @Test @@ -2028,67 +2101,82 @@ public void test_flex_direction_column_reverse_pos_bottom() { config.setExperimentalFeatureEnabled(YogaExperimentalFeature.ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE, true); final YogaNode root = createNode(config); - root.setFlexDirection(YogaFlexDirection.COLUMN_REVERSE); - root.setPosition(YogaEdge.BOTTOM, 100f); root.setWidth(100f); root.setHeight(100f); final YogaNode root_child0 = createNode(config); - root_child0.setWidth(10f); + root_child0.setFlexDirection(YogaFlexDirection.COLUMN_REVERSE); + root_child0.setPosition(YogaEdge.BOTTOM, 100f); + root_child0.setWidth(100f); + root_child0.setHeight(100f); root.addChildAt(root_child0, 0); - final YogaNode root_child1 = createNode(config); - root_child1.setWidth(10f); - root.addChildAt(root_child1, 1); + final YogaNode root_child0_child0 = createNode(config); + root_child0_child0.setWidth(10f); + root_child0.addChildAt(root_child0_child0, 0); - final YogaNode root_child2 = createNode(config); - root_child2.setWidth(10f); - root.addChildAt(root_child2, 2); + final YogaNode root_child0_child1 = createNode(config); + root_child0_child1.setWidth(10f); + root_child0.addChildAt(root_child0_child1, 1); + + final YogaNode root_child0_child2 = createNode(config); + root_child0_child2.setWidth(10f); + root_child0.addChildAt(root_child0_child2, 2); root.setDirection(YogaDirection.LTR); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); assertEquals(0f, root.getLayoutX(), 0.0f); - assertEquals(-200f, root.getLayoutY(), 0.0f); + assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); assertEquals(0f, root_child0.getLayoutX(), 0.0f); - assertEquals(100f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child0.getLayoutHeight(), 0.0f); + assertEquals(-100f, root_child0.getLayoutY(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(0f, root_child1.getLayoutX(), 0.0f); - assertEquals(100f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(0f, root_child2.getLayoutX(), 0.0f); - assertEquals(100f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(0f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutHeight(), 0.0f); root.setDirection(YogaDirection.RTL); root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); assertEquals(0f, root.getLayoutX(), 0.0f); - assertEquals(-200f, root.getLayoutY(), 0.0f); + assertEquals(0f, root.getLayoutY(), 0.0f); assertEquals(100f, root.getLayoutWidth(), 0.0f); assertEquals(100f, root.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child0.getLayoutX(), 0.0f); - assertEquals(100f, root_child0.getLayoutY(), 0.0f); - assertEquals(10f, root_child0.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child0.getLayoutHeight(), 0.0f); + assertEquals(0f, root_child0.getLayoutX(), 0.0f); + assertEquals(-100f, root_child0.getLayoutY(), 0.0f); + assertEquals(100f, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100f, root_child0.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child1.getLayoutX(), 0.0f); - assertEquals(100f, root_child1.getLayoutY(), 0.0f); - assertEquals(10f, root_child1.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child1.getLayoutHeight(), 0.0f); + assertEquals(90f, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child0.getLayoutHeight(), 0.0f); - assertEquals(90f, root_child2.getLayoutX(), 0.0f); - assertEquals(100f, root_child2.getLayoutY(), 0.0f); - assertEquals(10f, root_child2.getLayoutWidth(), 0.0f); - assertEquals(0f, root_child2.getLayoutHeight(), 0.0f); + assertEquals(90f, root_child0_child1.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child1.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child1.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child1.getLayoutHeight(), 0.0f); + + assertEquals(90f, root_child0_child2.getLayoutX(), 0.0f); + assertEquals(100f, root_child0_child2.getLayoutY(), 0.0f); + assertEquals(10f, root_child0_child2.getLayoutWidth(), 0.0f); + assertEquals(0f, root_child0_child2.getLayoutHeight(), 0.0f); } private YogaNode createNode(YogaConfig config) { diff --git a/javascript/tests/generated/YGFlexDirectionTest.test.ts b/javascript/tests/generated/YGFlexDirectionTest.test.ts index b3330ea81b..a9b9c6b79c 100644 --- a/javascript/tests/generated/YGFlexDirectionTest.test.ts +++ b/javascript/tests/generated/YGFlexDirectionTest.test.ts @@ -1823,65 +1823,80 @@ test.skip('flex_direction_row_reverse_pos_left', () => { try { root = Yoga.Node.create(config); - root.setFlexDirection(FlexDirection.RowReverse); - root.setPosition(Edge.Left, 100); root.setWidth(100); root.setHeight(100); const root_child0 = Yoga.Node.create(config); - root_child0.setWidth(10); + root_child0.setFlexDirection(FlexDirection.RowReverse); + root_child0.setPosition(Edge.Left, 100); + root_child0.setWidth(100); + root_child0.setHeight(100); root.insertChild(root_child0, 0); - const root_child1 = Yoga.Node.create(config); - root_child1.setWidth(10); - root.insertChild(root_child1, 1); + const root_child0_child0 = Yoga.Node.create(config); + root_child0_child0.setWidth(10); + root_child0.insertChild(root_child0_child0, 0); - const root_child2 = Yoga.Node.create(config); - root_child2.setWidth(10); - root.insertChild(root_child2, 2); + const root_child0_child1 = Yoga.Node.create(config); + root_child0_child1.setWidth(10); + root_child0.insertChild(root_child0_child1, 1); + + const root_child0_child2 = Yoga.Node.create(config); + root_child0_child2.setWidth(10); + root_child0.insertChild(root_child0_child2, 2); root.calculateLayout(undefined, undefined, Direction.LTR); - expect(root.getComputedLeft()).toBe(100); + expect(root.getComputedLeft()).toBe(0); expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(90); + expect(root_child0.getComputedLeft()).toBe(100); expect(root_child0.getComputedTop()).toBe(0); - expect(root_child0.getComputedWidth()).toBe(10); + expect(root_child0.getComputedWidth()).toBe(100); expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(80); - expect(root_child1.getComputedTop()).toBe(0); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(100); + expect(root_child0_child0.getComputedLeft()).toBe(90); + expect(root_child0_child0.getComputedTop()).toBe(0); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(100); - expect(root_child2.getComputedLeft()).toBe(70); - expect(root_child2.getComputedTop()).toBe(0); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(100); + expect(root_child0_child1.getComputedLeft()).toBe(80); + expect(root_child0_child1.getComputedTop()).toBe(0); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(100); + + expect(root_child0_child2.getComputedLeft()).toBe(70); + expect(root_child0_child2.getComputedTop()).toBe(0); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(100); root.calculateLayout(undefined, undefined, Direction.RTL); - expect(root.getComputedLeft()).toBe(100); + expect(root.getComputedLeft()).toBe(0); expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(0); + expect(root_child0.getComputedLeft()).toBe(100); expect(root_child0.getComputedTop()).toBe(0); - expect(root_child0.getComputedWidth()).toBe(10); + expect(root_child0.getComputedWidth()).toBe(100); expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(10); - expect(root_child1.getComputedTop()).toBe(0); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(100); + expect(root_child0_child0.getComputedLeft()).toBe(0); + expect(root_child0_child0.getComputedTop()).toBe(0); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(100); - expect(root_child2.getComputedLeft()).toBe(20); - expect(root_child2.getComputedTop()).toBe(0); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(100); + expect(root_child0_child1.getComputedLeft()).toBe(10); + expect(root_child0_child1.getComputedTop()).toBe(0); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(100); + + expect(root_child0_child2.getComputedLeft()).toBe(20); + expect(root_child0_child2.getComputedTop()).toBe(0); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(100); } finally { if (typeof root !== 'undefined') { root.freeRecursive(); @@ -1890,7 +1905,7 @@ test.skip('flex_direction_row_reverse_pos_left', () => { config.free(); } }); -test.skip('flex_direction_row_reverse_pos_start', () => { +test('flex_direction_row_reverse_pos_start', () => { const config = Yoga.Config.create(); let root; @@ -1898,65 +1913,80 @@ test.skip('flex_direction_row_reverse_pos_start', () => { try { root = Yoga.Node.create(config); - root.setFlexDirection(FlexDirection.RowReverse); - root.setPosition(Edge.Start, 100); root.setWidth(100); root.setHeight(100); const root_child0 = Yoga.Node.create(config); - root_child0.setWidth(10); + root_child0.setFlexDirection(FlexDirection.RowReverse); + root_child0.setPosition(Edge.Start, 100); + root_child0.setWidth(100); + root_child0.setHeight(100); root.insertChild(root_child0, 0); - const root_child1 = Yoga.Node.create(config); - root_child1.setWidth(10); - root.insertChild(root_child1, 1); + const root_child0_child0 = Yoga.Node.create(config); + root_child0_child0.setWidth(10); + root_child0.insertChild(root_child0_child0, 0); - const root_child2 = Yoga.Node.create(config); - root_child2.setWidth(10); - root.insertChild(root_child2, 2); + const root_child0_child1 = Yoga.Node.create(config); + root_child0_child1.setWidth(10); + root_child0.insertChild(root_child0_child1, 1); + + const root_child0_child2 = Yoga.Node.create(config); + root_child0_child2.setWidth(10); + root_child0.insertChild(root_child0_child2, 2); root.calculateLayout(undefined, undefined, Direction.LTR); - expect(root.getComputedLeft()).toBe(100); + expect(root.getComputedLeft()).toBe(0); expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(90); + expect(root_child0.getComputedLeft()).toBe(100); expect(root_child0.getComputedTop()).toBe(0); - expect(root_child0.getComputedWidth()).toBe(10); + expect(root_child0.getComputedWidth()).toBe(100); expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(80); - expect(root_child1.getComputedTop()).toBe(0); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(100); + expect(root_child0_child0.getComputedLeft()).toBe(90); + expect(root_child0_child0.getComputedTop()).toBe(0); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(100); - expect(root_child2.getComputedLeft()).toBe(70); - expect(root_child2.getComputedTop()).toBe(0); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(100); + expect(root_child0_child1.getComputedLeft()).toBe(80); + expect(root_child0_child1.getComputedTop()).toBe(0); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(100); + + expect(root_child0_child2.getComputedLeft()).toBe(70); + expect(root_child0_child2.getComputedTop()).toBe(0); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(100); root.calculateLayout(undefined, undefined, Direction.RTL); - expect(root.getComputedLeft()).toBe(-200); + expect(root.getComputedLeft()).toBe(0); expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(0); + expect(root_child0.getComputedLeft()).toBe(-100); expect(root_child0.getComputedTop()).toBe(0); - expect(root_child0.getComputedWidth()).toBe(10); + expect(root_child0.getComputedWidth()).toBe(100); expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(10); - expect(root_child1.getComputedTop()).toBe(0); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(100); + expect(root_child0_child0.getComputedLeft()).toBe(0); + expect(root_child0_child0.getComputedTop()).toBe(0); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(100); - expect(root_child2.getComputedLeft()).toBe(20); - expect(root_child2.getComputedTop()).toBe(0); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(100); + expect(root_child0_child1.getComputedLeft()).toBe(10); + expect(root_child0_child1.getComputedTop()).toBe(0); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(100); + + expect(root_child0_child2.getComputedLeft()).toBe(20); + expect(root_child0_child2.getComputedTop()).toBe(0); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(100); } finally { if (typeof root !== 'undefined') { root.freeRecursive(); @@ -1973,65 +2003,80 @@ test.skip('flex_direction_row_reverse_pos_right', () => { try { root = Yoga.Node.create(config); - root.setFlexDirection(FlexDirection.RowReverse); - root.setPosition(Edge.Right, 100); root.setWidth(100); root.setHeight(100); const root_child0 = Yoga.Node.create(config); - root_child0.setWidth(10); + root_child0.setFlexDirection(FlexDirection.RowReverse); + root_child0.setPosition(Edge.Right, 100); + root_child0.setWidth(100); + root_child0.setHeight(100); root.insertChild(root_child0, 0); - const root_child1 = Yoga.Node.create(config); - root_child1.setWidth(10); - root.insertChild(root_child1, 1); + const root_child0_child0 = Yoga.Node.create(config); + root_child0_child0.setWidth(10); + root_child0.insertChild(root_child0_child0, 0); - const root_child2 = Yoga.Node.create(config); - root_child2.setWidth(10); - root.insertChild(root_child2, 2); + const root_child0_child1 = Yoga.Node.create(config); + root_child0_child1.setWidth(10); + root_child0.insertChild(root_child0_child1, 1); + + const root_child0_child2 = Yoga.Node.create(config); + root_child0_child2.setWidth(10); + root_child0.insertChild(root_child0_child2, 2); root.calculateLayout(undefined, undefined, Direction.LTR); - expect(root.getComputedLeft()).toBe(-200); + expect(root.getComputedLeft()).toBe(0); expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(90); + expect(root_child0.getComputedLeft()).toBe(-100); expect(root_child0.getComputedTop()).toBe(0); - expect(root_child0.getComputedWidth()).toBe(10); + expect(root_child0.getComputedWidth()).toBe(100); expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(80); - expect(root_child1.getComputedTop()).toBe(0); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(100); + expect(root_child0_child0.getComputedLeft()).toBe(90); + expect(root_child0_child0.getComputedTop()).toBe(0); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(100); - expect(root_child2.getComputedLeft()).toBe(70); - expect(root_child2.getComputedTop()).toBe(0); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(100); + expect(root_child0_child1.getComputedLeft()).toBe(80); + expect(root_child0_child1.getComputedTop()).toBe(0); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(100); + + expect(root_child0_child2.getComputedLeft()).toBe(70); + expect(root_child0_child2.getComputedTop()).toBe(0); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(100); root.calculateLayout(undefined, undefined, Direction.RTL); - expect(root.getComputedLeft()).toBe(-200); + expect(root.getComputedLeft()).toBe(0); expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(0); + expect(root_child0.getComputedLeft()).toBe(-100); expect(root_child0.getComputedTop()).toBe(0); - expect(root_child0.getComputedWidth()).toBe(10); + expect(root_child0.getComputedWidth()).toBe(100); expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(10); - expect(root_child1.getComputedTop()).toBe(0); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(100); + expect(root_child0_child0.getComputedLeft()).toBe(0); + expect(root_child0_child0.getComputedTop()).toBe(0); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(100); - expect(root_child2.getComputedLeft()).toBe(20); - expect(root_child2.getComputedTop()).toBe(0); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(100); + expect(root_child0_child1.getComputedLeft()).toBe(10); + expect(root_child0_child1.getComputedTop()).toBe(0); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(100); + + expect(root_child0_child2.getComputedLeft()).toBe(20); + expect(root_child0_child2.getComputedTop()).toBe(0); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(100); } finally { if (typeof root !== 'undefined') { root.freeRecursive(); @@ -2040,7 +2085,7 @@ test.skip('flex_direction_row_reverse_pos_right', () => { config.free(); } }); -test.skip('flex_direction_row_reverse_pos_end', () => { +test('flex_direction_row_reverse_pos_end', () => { const config = Yoga.Config.create(); let root; @@ -2048,65 +2093,80 @@ test.skip('flex_direction_row_reverse_pos_end', () => { try { root = Yoga.Node.create(config); - root.setFlexDirection(FlexDirection.RowReverse); - root.setPosition(Edge.End, 100); root.setWidth(100); root.setHeight(100); const root_child0 = Yoga.Node.create(config); - root_child0.setWidth(10); + root_child0.setFlexDirection(FlexDirection.RowReverse); + root_child0.setPosition(Edge.End, 100); + root_child0.setWidth(100); + root_child0.setHeight(100); root.insertChild(root_child0, 0); - const root_child1 = Yoga.Node.create(config); - root_child1.setWidth(10); - root.insertChild(root_child1, 1); + const root_child0_child0 = Yoga.Node.create(config); + root_child0_child0.setWidth(10); + root_child0.insertChild(root_child0_child0, 0); - const root_child2 = Yoga.Node.create(config); - root_child2.setWidth(10); - root.insertChild(root_child2, 2); + const root_child0_child1 = Yoga.Node.create(config); + root_child0_child1.setWidth(10); + root_child0.insertChild(root_child0_child1, 1); + + const root_child0_child2 = Yoga.Node.create(config); + root_child0_child2.setWidth(10); + root_child0.insertChild(root_child0_child2, 2); root.calculateLayout(undefined, undefined, Direction.LTR); - expect(root.getComputedLeft()).toBe(-200); + expect(root.getComputedLeft()).toBe(0); expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(90); + expect(root_child0.getComputedLeft()).toBe(-100); expect(root_child0.getComputedTop()).toBe(0); - expect(root_child0.getComputedWidth()).toBe(10); + expect(root_child0.getComputedWidth()).toBe(100); expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(80); - expect(root_child1.getComputedTop()).toBe(0); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(100); + expect(root_child0_child0.getComputedLeft()).toBe(90); + expect(root_child0_child0.getComputedTop()).toBe(0); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(100); - expect(root_child2.getComputedLeft()).toBe(70); - expect(root_child2.getComputedTop()).toBe(0); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(100); + expect(root_child0_child1.getComputedLeft()).toBe(80); + expect(root_child0_child1.getComputedTop()).toBe(0); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(100); + + expect(root_child0_child2.getComputedLeft()).toBe(70); + expect(root_child0_child2.getComputedTop()).toBe(0); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(100); root.calculateLayout(undefined, undefined, Direction.RTL); - expect(root.getComputedLeft()).toBe(100); + expect(root.getComputedLeft()).toBe(0); expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(0); + expect(root_child0.getComputedLeft()).toBe(100); expect(root_child0.getComputedTop()).toBe(0); - expect(root_child0.getComputedWidth()).toBe(10); + expect(root_child0.getComputedWidth()).toBe(100); expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(10); - expect(root_child1.getComputedTop()).toBe(0); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(100); + expect(root_child0_child0.getComputedLeft()).toBe(0); + expect(root_child0_child0.getComputedTop()).toBe(0); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(100); - expect(root_child2.getComputedLeft()).toBe(20); - expect(root_child2.getComputedTop()).toBe(0); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(100); + expect(root_child0_child1.getComputedLeft()).toBe(10); + expect(root_child0_child1.getComputedTop()).toBe(0); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(100); + + expect(root_child0_child2.getComputedLeft()).toBe(20); + expect(root_child0_child2.getComputedTop()).toBe(0); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(100); } finally { if (typeof root !== 'undefined') { root.freeRecursive(); @@ -2123,65 +2183,80 @@ test.skip('flex_direction_column_reverse_pos_top', () => { try { root = Yoga.Node.create(config); - root.setFlexDirection(FlexDirection.ColumnReverse); - root.setPosition(Edge.Top, 100); root.setWidth(100); root.setHeight(100); const root_child0 = Yoga.Node.create(config); - root_child0.setWidth(10); + root_child0.setFlexDirection(FlexDirection.ColumnReverse); + root_child0.setPosition(Edge.Top, 100); + root_child0.setWidth(100); + root_child0.setHeight(100); root.insertChild(root_child0, 0); - const root_child1 = Yoga.Node.create(config); - root_child1.setWidth(10); - root.insertChild(root_child1, 1); + const root_child0_child0 = Yoga.Node.create(config); + root_child0_child0.setWidth(10); + root_child0.insertChild(root_child0_child0, 0); - const root_child2 = Yoga.Node.create(config); - root_child2.setWidth(10); - root.insertChild(root_child2, 2); + const root_child0_child1 = Yoga.Node.create(config); + root_child0_child1.setWidth(10); + root_child0.insertChild(root_child0_child1, 1); + + const root_child0_child2 = Yoga.Node.create(config); + root_child0_child2.setWidth(10); + root_child0.insertChild(root_child0_child2, 2); root.calculateLayout(undefined, undefined, Direction.LTR); expect(root.getComputedLeft()).toBe(0); - expect(root.getComputedTop()).toBe(100); + expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); expect(root_child0.getComputedLeft()).toBe(0); expect(root_child0.getComputedTop()).toBe(100); - expect(root_child0.getComputedWidth()).toBe(10); - expect(root_child0.getComputedHeight()).toBe(0); + expect(root_child0.getComputedWidth()).toBe(100); + expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(0); - expect(root_child1.getComputedTop()).toBe(100); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(0); + expect(root_child0_child0.getComputedLeft()).toBe(0); + expect(root_child0_child0.getComputedTop()).toBe(100); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(0); - expect(root_child2.getComputedLeft()).toBe(0); - expect(root_child2.getComputedTop()).toBe(100); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(0); + expect(root_child0_child1.getComputedLeft()).toBe(0); + expect(root_child0_child1.getComputedTop()).toBe(100); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(0); + + expect(root_child0_child2.getComputedLeft()).toBe(0); + expect(root_child0_child2.getComputedTop()).toBe(100); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(0); root.calculateLayout(undefined, undefined, Direction.RTL); expect(root.getComputedLeft()).toBe(0); - expect(root.getComputedTop()).toBe(100); + expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(90); + expect(root_child0.getComputedLeft()).toBe(0); expect(root_child0.getComputedTop()).toBe(100); - expect(root_child0.getComputedWidth()).toBe(10); - expect(root_child0.getComputedHeight()).toBe(0); + expect(root_child0.getComputedWidth()).toBe(100); + expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(90); - expect(root_child1.getComputedTop()).toBe(100); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(0); + expect(root_child0_child0.getComputedLeft()).toBe(90); + expect(root_child0_child0.getComputedTop()).toBe(100); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(0); - expect(root_child2.getComputedLeft()).toBe(90); - expect(root_child2.getComputedTop()).toBe(100); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(0); + expect(root_child0_child1.getComputedLeft()).toBe(90); + expect(root_child0_child1.getComputedTop()).toBe(100); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(0); + + expect(root_child0_child2.getComputedLeft()).toBe(90); + expect(root_child0_child2.getComputedTop()).toBe(100); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(0); } finally { if (typeof root !== 'undefined') { root.freeRecursive(); @@ -2198,65 +2273,80 @@ test.skip('flex_direction_column_reverse_pos_bottom', () => { try { root = Yoga.Node.create(config); - root.setFlexDirection(FlexDirection.ColumnReverse); - root.setPosition(Edge.Bottom, 100); root.setWidth(100); root.setHeight(100); const root_child0 = Yoga.Node.create(config); - root_child0.setWidth(10); + root_child0.setFlexDirection(FlexDirection.ColumnReverse); + root_child0.setPosition(Edge.Bottom, 100); + root_child0.setWidth(100); + root_child0.setHeight(100); root.insertChild(root_child0, 0); - const root_child1 = Yoga.Node.create(config); - root_child1.setWidth(10); - root.insertChild(root_child1, 1); + const root_child0_child0 = Yoga.Node.create(config); + root_child0_child0.setWidth(10); + root_child0.insertChild(root_child0_child0, 0); - const root_child2 = Yoga.Node.create(config); - root_child2.setWidth(10); - root.insertChild(root_child2, 2); + const root_child0_child1 = Yoga.Node.create(config); + root_child0_child1.setWidth(10); + root_child0.insertChild(root_child0_child1, 1); + + const root_child0_child2 = Yoga.Node.create(config); + root_child0_child2.setWidth(10); + root_child0.insertChild(root_child0_child2, 2); root.calculateLayout(undefined, undefined, Direction.LTR); expect(root.getComputedLeft()).toBe(0); - expect(root.getComputedTop()).toBe(-200); + expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); expect(root_child0.getComputedLeft()).toBe(0); - expect(root_child0.getComputedTop()).toBe(100); - expect(root_child0.getComputedWidth()).toBe(10); - expect(root_child0.getComputedHeight()).toBe(0); + expect(root_child0.getComputedTop()).toBe(-100); + expect(root_child0.getComputedWidth()).toBe(100); + expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(0); - expect(root_child1.getComputedTop()).toBe(100); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(0); + expect(root_child0_child0.getComputedLeft()).toBe(0); + expect(root_child0_child0.getComputedTop()).toBe(100); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(0); - expect(root_child2.getComputedLeft()).toBe(0); - expect(root_child2.getComputedTop()).toBe(100); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(0); + expect(root_child0_child1.getComputedLeft()).toBe(0); + expect(root_child0_child1.getComputedTop()).toBe(100); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(0); + + expect(root_child0_child2.getComputedLeft()).toBe(0); + expect(root_child0_child2.getComputedTop()).toBe(100); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(0); root.calculateLayout(undefined, undefined, Direction.RTL); expect(root.getComputedLeft()).toBe(0); - expect(root.getComputedTop()).toBe(-200); + expect(root.getComputedTop()).toBe(0); expect(root.getComputedWidth()).toBe(100); expect(root.getComputedHeight()).toBe(100); - expect(root_child0.getComputedLeft()).toBe(90); - expect(root_child0.getComputedTop()).toBe(100); - expect(root_child0.getComputedWidth()).toBe(10); - expect(root_child0.getComputedHeight()).toBe(0); + expect(root_child0.getComputedLeft()).toBe(0); + expect(root_child0.getComputedTop()).toBe(-100); + expect(root_child0.getComputedWidth()).toBe(100); + expect(root_child0.getComputedHeight()).toBe(100); - expect(root_child1.getComputedLeft()).toBe(90); - expect(root_child1.getComputedTop()).toBe(100); - expect(root_child1.getComputedWidth()).toBe(10); - expect(root_child1.getComputedHeight()).toBe(0); + expect(root_child0_child0.getComputedLeft()).toBe(90); + expect(root_child0_child0.getComputedTop()).toBe(100); + expect(root_child0_child0.getComputedWidth()).toBe(10); + expect(root_child0_child0.getComputedHeight()).toBe(0); - expect(root_child2.getComputedLeft()).toBe(90); - expect(root_child2.getComputedTop()).toBe(100); - expect(root_child2.getComputedWidth()).toBe(10); - expect(root_child2.getComputedHeight()).toBe(0); + expect(root_child0_child1.getComputedLeft()).toBe(90); + expect(root_child0_child1.getComputedTop()).toBe(100); + expect(root_child0_child1.getComputedWidth()).toBe(10); + expect(root_child0_child1.getComputedHeight()).toBe(0); + + expect(root_child0_child2.getComputedLeft()).toBe(90); + expect(root_child0_child2.getComputedTop()).toBe(100); + expect(root_child0_child2.getComputedWidth()).toBe(10); + expect(root_child0_child2.getComputedHeight()).toBe(0); } finally { if (typeof root !== 'undefined') { root.freeRecursive(); diff --git a/tests/generated/YGFlexDirectionTest.cpp b/tests/generated/YGFlexDirectionTest.cpp index 05f03207e9..e0502bbfcf 100644 --- a/tests/generated/YGFlexDirectionTest.cpp +++ b/tests/generated/YGFlexDirectionTest.cpp @@ -1688,65 +1688,80 @@ TEST(YogaTest, flex_direction_row_reverse_pos_left) { YGConfigSetExperimentalFeatureEnabled(config, YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge, true); const YGNodeRef root = YGNodeNewWithConfig(config); - YGNodeStyleSetFlexDirection(root, YGFlexDirectionRowReverse); - YGNodeStyleSetPosition(root, YGEdgeLeft, 100); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); const YGNodeRef root_child0 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child0, 10); + YGNodeStyleSetFlexDirection(root_child0, YGFlexDirectionRowReverse); + YGNodeStyleSetPosition(root_child0, YGEdgeLeft, 100); + YGNodeStyleSetWidth(root_child0, 100); + YGNodeStyleSetHeight(root_child0, 100); YGNodeInsertChild(root, root_child0, 0); - const YGNodeRef root_child1 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child1, 10); - YGNodeInsertChild(root, root_child1, 1); + const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child0, 10); + YGNodeInsertChild(root_child0, root_child0_child0, 0); - const YGNodeRef root_child2 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child2, 10); - YGNodeInsertChild(root, root_child2, 2); + const YGNodeRef root_child0_child1 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child1, 10); + YGNodeInsertChild(root_child0, root_child0_child1, 1); + + const YGNodeRef root_child0_child2 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child2, 10); + YGNodeInsertChild(root_child0, root_child0_child2, 2); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root)); + 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(90, YGNodeLayoutGetLeft(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root)); + 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(100, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeFreeRecursive(root); @@ -1754,71 +1769,84 @@ TEST(YogaTest, flex_direction_row_reverse_pos_left) { } TEST(YogaTest, flex_direction_row_reverse_pos_start) { - GTEST_SKIP(); - const YGConfigRef config = YGConfigNew(); YGConfigSetExperimentalFeatureEnabled(config, YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge, true); const YGNodeRef root = YGNodeNewWithConfig(config); - YGNodeStyleSetFlexDirection(root, YGFlexDirectionRowReverse); - YGNodeStyleSetPosition(root, YGEdgeStart, 100); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); const YGNodeRef root_child0 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child0, 10); + YGNodeStyleSetFlexDirection(root_child0, YGFlexDirectionRowReverse); + YGNodeStyleSetPosition(root_child0, YGEdgeStart, 100); + YGNodeStyleSetWidth(root_child0, 100); + YGNodeStyleSetHeight(root_child0, 100); YGNodeInsertChild(root, root_child0, 0); - const YGNodeRef root_child1 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child1, 10); - YGNodeInsertChild(root, root_child1, 1); + const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child0, 10); + YGNodeInsertChild(root_child0, root_child0_child0, 0); - const YGNodeRef root_child2 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child2, 10); - YGNodeInsertChild(root, root_child2, 2); + const YGNodeRef root_child0_child1 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child1, 10); + YGNodeInsertChild(root_child0, root_child0_child1, 1); + + const YGNodeRef root_child0_child2 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child2, 10); + YGNodeInsertChild(root_child0, root_child0_child2, 2); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root)); + 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(90, YGNodeLayoutGetLeft(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); - ASSERT_FLOAT_EQ(-200, YGNodeLayoutGetLeft(root)); + 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(-100, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeFreeRecursive(root); @@ -1832,65 +1860,80 @@ TEST(YogaTest, flex_direction_row_reverse_pos_right) { YGConfigSetExperimentalFeatureEnabled(config, YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge, true); const YGNodeRef root = YGNodeNewWithConfig(config); - YGNodeStyleSetFlexDirection(root, YGFlexDirectionRowReverse); - YGNodeStyleSetPosition(root, YGEdgeRight, 100); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); const YGNodeRef root_child0 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child0, 10); + YGNodeStyleSetFlexDirection(root_child0, YGFlexDirectionRowReverse); + YGNodeStyleSetPosition(root_child0, YGEdgeRight, 100); + YGNodeStyleSetWidth(root_child0, 100); + YGNodeStyleSetHeight(root_child0, 100); YGNodeInsertChild(root, root_child0, 0); - const YGNodeRef root_child1 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child1, 10); - YGNodeInsertChild(root, root_child1, 1); + const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child0, 10); + YGNodeInsertChild(root_child0, root_child0_child0, 0); - const YGNodeRef root_child2 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child2, 10); - YGNodeInsertChild(root, root_child2, 2); + const YGNodeRef root_child0_child1 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child1, 10); + YGNodeInsertChild(root_child0, root_child0_child1, 1); + + const YGNodeRef root_child0_child2 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child2, 10); + YGNodeInsertChild(root_child0, root_child0_child2, 2); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); - ASSERT_FLOAT_EQ(-200, YGNodeLayoutGetLeft(root)); + 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(90, YGNodeLayoutGetLeft(root_child0)); + ASSERT_FLOAT_EQ(-100, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); - ASSERT_FLOAT_EQ(-200, YGNodeLayoutGetLeft(root)); + 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(-100, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeFreeRecursive(root); @@ -1898,71 +1941,84 @@ TEST(YogaTest, flex_direction_row_reverse_pos_right) { } TEST(YogaTest, flex_direction_row_reverse_pos_end) { - GTEST_SKIP(); - const YGConfigRef config = YGConfigNew(); YGConfigSetExperimentalFeatureEnabled(config, YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge, true); const YGNodeRef root = YGNodeNewWithConfig(config); - YGNodeStyleSetFlexDirection(root, YGFlexDirectionRowReverse); - YGNodeStyleSetPosition(root, YGEdgeEnd, 100); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); const YGNodeRef root_child0 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child0, 10); + YGNodeStyleSetFlexDirection(root_child0, YGFlexDirectionRowReverse); + YGNodeStyleSetPosition(root_child0, YGEdgeEnd, 100); + YGNodeStyleSetWidth(root_child0, 100); + YGNodeStyleSetHeight(root_child0, 100); YGNodeInsertChild(root, root_child0, 0); - const YGNodeRef root_child1 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child1, 10); - YGNodeInsertChild(root, root_child1, 1); + const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child0, 10); + YGNodeInsertChild(root_child0, root_child0_child0, 0); - const YGNodeRef root_child2 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child2, 10); - YGNodeInsertChild(root, root_child2, 2); + const YGNodeRef root_child0_child1 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child1, 10); + YGNodeInsertChild(root_child0, root_child0_child1, 1); + + const YGNodeRef root_child0_child2 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child2, 10); + YGNodeInsertChild(root_child0, root_child0_child2, 2); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); - ASSERT_FLOAT_EQ(-200, YGNodeLayoutGetLeft(root)); + 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(90, YGNodeLayoutGetLeft(root_child0)); + ASSERT_FLOAT_EQ(-100, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(70, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root)); + 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(100, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(20, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeFreeRecursive(root); @@ -1976,65 +2032,80 @@ TEST(YogaTest, flex_direction_column_reverse_pos_top) { YGConfigSetExperimentalFeatureEnabled(config, YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge, true); const YGNodeRef root = YGNodeNewWithConfig(config); - YGNodeStyleSetFlexDirection(root, YGFlexDirectionColumnReverse); - YGNodeStyleSetPosition(root, YGEdgeTop, 100); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); const YGNodeRef root_child0 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child0, 10); + YGNodeStyleSetFlexDirection(root_child0, YGFlexDirectionColumnReverse); + YGNodeStyleSetPosition(root_child0, YGEdgeTop, 100); + YGNodeStyleSetWidth(root_child0, 100); + YGNodeStyleSetHeight(root_child0, 100); YGNodeInsertChild(root, root_child0, 0); - const YGNodeRef root_child1 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child1, 10); - YGNodeInsertChild(root, root_child1, 1); + const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child0, 10); + YGNodeInsertChild(root_child0, root_child0_child0, 0); - const YGNodeRef root_child2 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child2, 10); - YGNodeInsertChild(root, root_child2, 2); + const YGNodeRef root_child0_child1 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child1, 10); + YGNodeInsertChild(root_child0, root_child0_child1, 1); + + const YGNodeRef root_child0_child2 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child2, 10); + YGNodeInsertChild(root_child0, root_child0_child2, 2); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(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(100, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); - ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeFreeRecursive(root); @@ -2048,65 +2119,80 @@ TEST(YogaTest, flex_direction_column_reverse_pos_bottom) { YGConfigSetExperimentalFeatureEnabled(config, YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge, true); const YGNodeRef root = YGNodeNewWithConfig(config); - YGNodeStyleSetFlexDirection(root, YGFlexDirectionColumnReverse); - YGNodeStyleSetPosition(root, YGEdgeBottom, 100); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); const YGNodeRef root_child0 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child0, 10); + YGNodeStyleSetFlexDirection(root_child0, YGFlexDirectionColumnReverse); + YGNodeStyleSetPosition(root_child0, YGEdgeBottom, 100); + YGNodeStyleSetWidth(root_child0, 100); + YGNodeStyleSetHeight(root_child0, 100); YGNodeInsertChild(root, root_child0, 0); - const YGNodeRef root_child1 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child1, 10); - YGNodeInsertChild(root, root_child1, 1); + const YGNodeRef root_child0_child0 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child0, 10); + YGNodeInsertChild(root_child0, root_child0_child0, 0); - const YGNodeRef root_child2 = YGNodeNewWithConfig(config); - YGNodeStyleSetWidth(root_child2, 10); - YGNodeInsertChild(root, root_child2, 2); + const YGNodeRef root_child0_child1 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child1, 10); + YGNodeInsertChild(root_child0, root_child0_child1, 1); + + const YGNodeRef root_child0_child2 = YGNodeNewWithConfig(config); + YGNodeStyleSetWidth(root_child0_child2, 10); + YGNodeInsertChild(root_child0, root_child0_child2, 2); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); - ASSERT_FLOAT_EQ(-200, YGNodeLayoutGetTop(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(100, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0)); + ASSERT_FLOAT_EQ(-100, YGNodeLayoutGetTop(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL); ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root)); - ASSERT_FLOAT_EQ(-200, YGNodeLayoutGetTop(root)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root)); ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root)); - ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0)); + ASSERT_FLOAT_EQ(-100, YGNodeLayoutGetTop(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0)); - ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child1)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child1)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child1)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child1)); + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child0)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child0)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child0)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child0)); - ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child2)); - ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child2)); - ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child2)); - ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child2)); + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child1)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child1)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child1)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child1)); + + ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0_child2)); + ASSERT_FLOAT_EQ(100, YGNodeLayoutGetTop(root_child0_child2)); + ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0_child2)); + ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0_child2)); YGNodeFreeRecursive(root);