Correcting Flex fix within Experimental feature
Summary: This diff corrects the fix to be limited only to cases when either element itself or all of it's children can't be flexed Reviewed By: emilsjolander Differential Revision: D4915189 fbshipit-source-id: efccee2fe39ed0f474a41dc3250d24c546f3f5d9
This commit is contained in:
committed by
Facebook Github Bot
parent
6be1c2cdb4
commit
cb612bcfbe
@@ -475,6 +475,99 @@ namespace Facebook.Yoga
|
|||||||
Assert.AreEqual(0f, root_child0_child0.LayoutHeight);
|
Assert.AreEqual(0f, root_child0_child0.LayoutHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void Test_flex_grow_child()
|
||||||
|
{
|
||||||
|
YogaConfig config = new YogaConfig();
|
||||||
|
|
||||||
|
YogaNode root = new YogaNode(config);
|
||||||
|
root.FlexDirection = YogaFlexDirection.Row;
|
||||||
|
|
||||||
|
YogaNode root_child0 = new YogaNode(config);
|
||||||
|
root_child0.FlexGrow = 1;
|
||||||
|
root_child0.FlexBasis = 0;
|
||||||
|
root_child0.Height = 100;
|
||||||
|
root.Insert(0, root_child0);
|
||||||
|
root.StyleDirection = YogaDirection.LTR;
|
||||||
|
root.CalculateLayout();
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root.LayoutX);
|
||||||
|
Assert.AreEqual(0f, root.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root.LayoutWidth);
|
||||||
|
Assert.AreEqual(100f, root.LayoutHeight);
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutWidth);
|
||||||
|
Assert.AreEqual(100f, root_child0.LayoutHeight);
|
||||||
|
|
||||||
|
root.StyleDirection = YogaDirection.RTL;
|
||||||
|
root.CalculateLayout();
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root.LayoutX);
|
||||||
|
Assert.AreEqual(0f, root.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root.LayoutWidth);
|
||||||
|
Assert.AreEqual(100f, root.LayoutHeight);
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutWidth);
|
||||||
|
Assert.AreEqual(100f, root_child0.LayoutHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void Test_flex_grow_within_constrained_min_max_column()
|
||||||
|
{
|
||||||
|
YogaConfig config = new YogaConfig();
|
||||||
|
|
||||||
|
YogaNode root = new YogaNode(config);
|
||||||
|
root.MinHeight = 100;
|
||||||
|
root.MaxHeight = 200;
|
||||||
|
|
||||||
|
YogaNode root_child0 = new YogaNode(config);
|
||||||
|
root_child0.FlexGrow = 1;
|
||||||
|
root.Insert(0, root_child0);
|
||||||
|
|
||||||
|
YogaNode root_child1 = new YogaNode(config);
|
||||||
|
root_child1.Height = 50;
|
||||||
|
root.Insert(1, root_child1);
|
||||||
|
root.StyleDirection = YogaDirection.LTR;
|
||||||
|
root.CalculateLayout();
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root.LayoutX);
|
||||||
|
Assert.AreEqual(0f, root.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root.LayoutWidth);
|
||||||
|
Assert.AreEqual(100f, root.LayoutHeight);
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutWidth);
|
||||||
|
Assert.AreEqual(50f, root_child0.LayoutHeight);
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root_child1.LayoutX);
|
||||||
|
Assert.AreEqual(50f, root_child1.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root_child1.LayoutWidth);
|
||||||
|
Assert.AreEqual(50f, root_child1.LayoutHeight);
|
||||||
|
|
||||||
|
root.StyleDirection = YogaDirection.RTL;
|
||||||
|
root.CalculateLayout();
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root.LayoutX);
|
||||||
|
Assert.AreEqual(0f, root.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root.LayoutWidth);
|
||||||
|
Assert.AreEqual(100f, root.LayoutHeight);
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root_child0.LayoutWidth);
|
||||||
|
Assert.AreEqual(50f, root_child0.LayoutHeight);
|
||||||
|
|
||||||
|
Assert.AreEqual(0f, root_child1.LayoutX);
|
||||||
|
Assert.AreEqual(50f, root_child1.LayoutY);
|
||||||
|
Assert.AreEqual(0f, root_child1.LayoutWidth);
|
||||||
|
Assert.AreEqual(50f, root_child1.LayoutHeight);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_flex_grow_within_max_width()
|
public void Test_flex_grow_within_max_width()
|
||||||
{
|
{
|
||||||
@@ -957,113 +1050,5 @@ namespace Facebook.Yoga
|
|||||||
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void Test_min_width_in_flex_distribution()
|
|
||||||
{
|
|
||||||
YogaConfig config = new YogaConfig();
|
|
||||||
|
|
||||||
YogaNode root = new YogaNode(config);
|
|
||||||
root.FlexDirection = YogaFlexDirection.Row;
|
|
||||||
root.Width = 300;
|
|
||||||
root.Height = 300;
|
|
||||||
|
|
||||||
YogaNode root_child0 = new YogaNode(config);
|
|
||||||
root_child0.FlexGrow = 2;
|
|
||||||
root_child0.FlexShrink = 1;
|
|
||||||
root_child0.FlexBasis = 0.Percent();
|
|
||||||
root_child0.MinWidth = 100;
|
|
||||||
root_child0.MaxWidth = 200;
|
|
||||||
root.Insert(0, root_child0);
|
|
||||||
|
|
||||||
YogaNode root_child1 = new YogaNode(config);
|
|
||||||
root_child1.FlexGrow = 1;
|
|
||||||
root_child1.FlexShrink = 1;
|
|
||||||
root_child1.FlexBasis = 0.Percent();
|
|
||||||
root.Insert(1, root_child1);
|
|
||||||
|
|
||||||
YogaNode root_child2 = new YogaNode(config);
|
|
||||||
root_child2.FlexGrow = 1;
|
|
||||||
root_child2.FlexShrink = 1;
|
|
||||||
root_child2.FlexBasis = 0.Percent();
|
|
||||||
root.Insert(2, root_child2);
|
|
||||||
|
|
||||||
YogaNode root_child3 = new YogaNode(config);
|
|
||||||
root_child3.FlexGrow = 1;
|
|
||||||
root_child3.FlexShrink = 1;
|
|
||||||
root_child3.FlexBasis = 0.Percent();
|
|
||||||
root.Insert(3, root_child3);
|
|
||||||
|
|
||||||
YogaNode root_child4 = new YogaNode(config);
|
|
||||||
root_child4.FlexGrow = 1;
|
|
||||||
root_child4.FlexShrink = 1;
|
|
||||||
root_child4.FlexBasis = 0.Percent();
|
|
||||||
root.Insert(4, root_child4);
|
|
||||||
root.StyleDirection = YogaDirection.LTR;
|
|
||||||
root.CalculateLayout();
|
|
||||||
|
|
||||||
Assert.AreEqual(0f, root.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root.LayoutY);
|
|
||||||
Assert.AreEqual(300f, root.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
||||||
Assert.AreEqual(100f, root_child0.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child0.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(100f, root_child1.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child1.LayoutY);
|
|
||||||
Assert.AreEqual(50f, root_child1.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child1.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(150f, root_child2.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child2.LayoutY);
|
|
||||||
Assert.AreEqual(50f, root_child2.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child2.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(200f, root_child3.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child3.LayoutY);
|
|
||||||
Assert.AreEqual(50f, root_child3.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child3.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(250f, root_child4.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child4.LayoutY);
|
|
||||||
Assert.AreEqual(50f, root_child4.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child4.LayoutHeight);
|
|
||||||
|
|
||||||
root.StyleDirection = YogaDirection.RTL;
|
|
||||||
root.CalculateLayout();
|
|
||||||
|
|
||||||
Assert.AreEqual(0f, root.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root.LayoutY);
|
|
||||||
Assert.AreEqual(300f, root.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(200f, root_child0.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
||||||
Assert.AreEqual(100f, root_child0.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child0.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(150f, root_child1.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child1.LayoutY);
|
|
||||||
Assert.AreEqual(50f, root_child1.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child1.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(100f, root_child2.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child2.LayoutY);
|
|
||||||
Assert.AreEqual(50f, root_child2.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child2.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(50f, root_child3.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child3.LayoutY);
|
|
||||||
Assert.AreEqual(50f, root_child3.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child3.LayoutHeight);
|
|
||||||
|
|
||||||
Assert.AreEqual(0f, root_child4.LayoutX);
|
|
||||||
Assert.AreEqual(0f, root_child4.LayoutY);
|
|
||||||
Assert.AreEqual(50f, root_child4.LayoutWidth);
|
|
||||||
Assert.AreEqual(300f, root_child4.LayoutHeight);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -41,6 +41,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="flex_grow_child" style="flex-direction: row;">
|
||||||
|
<div style="height: 100px; flex-grow: 1; flex-basis: 0px;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="flex_grow_within_constrained_min_max_column" style="min-height: 100px; max-height: 200px">
|
||||||
|
<div style="flex-grow:1;"></div>
|
||||||
|
<div style="height: 50px;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="flex_grow_within_max_width" style="width: 200px; height: 100px;">
|
<div id="flex_grow_within_max_width" style="width: 200px; height: 100px;">
|
||||||
<div style="flex-direction: row; max-width: 100px;">
|
<div style="flex-direction: row; max-width: 100px;">
|
||||||
<div style="height: 20px; flex-grow: 1;"></div>
|
<div style="height: 20px; flex-grow: 1;"></div>
|
||||||
|
@@ -465,6 +465,97 @@ public class YGMinMaxDimensionTest {
|
|||||||
assertEquals(0f, root_child0_child0.getLayoutHeight(), 0.0f);
|
assertEquals(0f, root_child0_child0.getLayoutHeight(), 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_flex_grow_child() {
|
||||||
|
YogaConfig config = new YogaConfig();
|
||||||
|
|
||||||
|
final YogaNode root = new YogaNode(config);
|
||||||
|
root.setFlexDirection(YogaFlexDirection.ROW);
|
||||||
|
|
||||||
|
final YogaNode root_child0 = new YogaNode(config);
|
||||||
|
root_child0.setFlexGrow(1f);
|
||||||
|
root_child0.setFlexBasis(0f);
|
||||||
|
root_child0.setHeight(100f);
|
||||||
|
root.addChildAt(root_child0, 0);
|
||||||
|
root.setDirection(YogaDirection.LTR);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(0f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
root.setDirection(YogaDirection.RTL);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(0f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_flex_grow_within_constrained_min_max_column() {
|
||||||
|
YogaConfig config = new YogaConfig();
|
||||||
|
|
||||||
|
final YogaNode root = new YogaNode(config);
|
||||||
|
root.setMinHeight(100f);
|
||||||
|
root.setMaxHeight(200f);
|
||||||
|
|
||||||
|
final YogaNode root_child0 = new YogaNode(config);
|
||||||
|
root_child0.setFlexGrow(1f);
|
||||||
|
root.addChildAt(root_child0, 0);
|
||||||
|
|
||||||
|
final YogaNode root_child1 = new YogaNode(config);
|
||||||
|
root_child1.setHeight(50f);
|
||||||
|
root.addChildAt(root_child1, 1);
|
||||||
|
root.setDirection(YogaDirection.LTR);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(0f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(50f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(0f, root_child1.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(50f, root_child1.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root_child1.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(50f, root_child1.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
root.setDirection(YogaDirection.RTL);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(0f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(50f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(0f, root_child1.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(50f, root_child1.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(0f, root_child1.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(50f, root_child1.getLayoutHeight(), 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_flex_grow_within_max_width() {
|
public void test_flex_grow_within_max_width() {
|
||||||
YogaConfig config = new YogaConfig();
|
YogaConfig config = new YogaConfig();
|
||||||
@@ -936,111 +1027,4 @@ public class YGMinMaxDimensionTest {
|
|||||||
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test_min_width_in_flex_distribution() {
|
|
||||||
YogaConfig config = new YogaConfig();
|
|
||||||
|
|
||||||
final YogaNode root = new YogaNode(config);
|
|
||||||
root.setFlexDirection(YogaFlexDirection.ROW);
|
|
||||||
root.setWidth(300f);
|
|
||||||
root.setHeight(300f);
|
|
||||||
|
|
||||||
final YogaNode root_child0 = new YogaNode(config);
|
|
||||||
root_child0.setFlexGrow(2f);
|
|
||||||
root_child0.setFlexShrink(1f);
|
|
||||||
root_child0.setFlexBasisPercent(0f);
|
|
||||||
root_child0.setMinWidth(100f);
|
|
||||||
root_child0.setMaxWidth(200f);
|
|
||||||
root.addChildAt(root_child0, 0);
|
|
||||||
|
|
||||||
final YogaNode root_child1 = new YogaNode(config);
|
|
||||||
root_child1.setFlexGrow(1f);
|
|
||||||
root_child1.setFlexShrink(1f);
|
|
||||||
root_child1.setFlexBasisPercent(0f);
|
|
||||||
root.addChildAt(root_child1, 1);
|
|
||||||
|
|
||||||
final YogaNode root_child2 = new YogaNode(config);
|
|
||||||
root_child2.setFlexGrow(1f);
|
|
||||||
root_child2.setFlexShrink(1f);
|
|
||||||
root_child2.setFlexBasisPercent(0f);
|
|
||||||
root.addChildAt(root_child2, 2);
|
|
||||||
|
|
||||||
final YogaNode root_child3 = new YogaNode(config);
|
|
||||||
root_child3.setFlexGrow(1f);
|
|
||||||
root_child3.setFlexShrink(1f);
|
|
||||||
root_child3.setFlexBasisPercent(0f);
|
|
||||||
root.addChildAt(root_child3, 3);
|
|
||||||
|
|
||||||
final YogaNode root_child4 = new YogaNode(config);
|
|
||||||
root_child4.setFlexGrow(1f);
|
|
||||||
root_child4.setFlexShrink(1f);
|
|
||||||
root_child4.setFlexBasisPercent(0f);
|
|
||||||
root.addChildAt(root_child4, 4);
|
|
||||||
root.setDirection(YogaDirection.LTR);
|
|
||||||
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
|
||||||
|
|
||||||
assertEquals(0f, root.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(300f, root.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(0f, root_child0.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(100f, root_child0.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child0.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(100f, root_child1.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child1.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(50f, root_child1.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child1.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(150f, root_child2.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child2.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(50f, root_child2.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child2.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(200f, root_child3.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child3.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(50f, root_child3.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child3.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(250f, root_child4.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child4.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(50f, root_child4.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child4.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
root.setDirection(YogaDirection.RTL);
|
|
||||||
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
|
||||||
|
|
||||||
assertEquals(0f, root.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(300f, root.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(200f, root_child0.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(100f, root_child0.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child0.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(150f, root_child1.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child1.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(50f, root_child1.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child1.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(100f, root_child2.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child2.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(50f, root_child2.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child2.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(50f, root_child3.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child3.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(50f, root_child3.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child3.getLayoutHeight(), 0.0f);
|
|
||||||
|
|
||||||
assertEquals(0f, root_child4.getLayoutX(), 0.0f);
|
|
||||||
assertEquals(0f, root_child4.getLayoutY(), 0.0f);
|
|
||||||
assertEquals(50f, root_child4.getLayoutWidth(), 0.0f);
|
|
||||||
assertEquals(300f, root_child4.getLayoutHeight(), 0.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -498,6 +498,105 @@ it("flex_grow_in_at_most_container", function () {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
it("flex_grow_child", function () {
|
||||||
|
var config = Yoga.Config.create();
|
||||||
|
|
||||||
|
try {
|
||||||
|
var root = Yoga.Node.create(config);
|
||||||
|
root.setFlexDirection(Yoga.FLEX_DIRECTION_ROW);
|
||||||
|
|
||||||
|
var root_child0 = Yoga.Node.create(config);
|
||||||
|
root_child0.setFlexGrow(1);
|
||||||
|
root_child0.setFlexBasis(0);
|
||||||
|
root_child0.setHeight(100);
|
||||||
|
root.insertChild(root_child0, 0);
|
||||||
|
root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR);
|
||||||
|
|
||||||
|
console.assert(0 === root.getComputedLeft(), "0 === root.getComputedLeft() (" + root.getComputedLeft() + ")");
|
||||||
|
console.assert(0 === root.getComputedTop(), "0 === root.getComputedTop() (" + root.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root.getComputedWidth(), "0 === root.getComputedWidth() (" + root.getComputedWidth() + ")");
|
||||||
|
console.assert(100 === root.getComputedHeight(), "100 === root.getComputedHeight() (" + root.getComputedHeight() + ")");
|
||||||
|
|
||||||
|
console.assert(0 === root_child0.getComputedLeft(), "0 === root_child0.getComputedLeft() (" + root_child0.getComputedLeft() + ")");
|
||||||
|
console.assert(0 === root_child0.getComputedTop(), "0 === root_child0.getComputedTop() (" + root_child0.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root_child0.getComputedWidth(), "0 === root_child0.getComputedWidth() (" + root_child0.getComputedWidth() + ")");
|
||||||
|
console.assert(100 === root_child0.getComputedHeight(), "100 === root_child0.getComputedHeight() (" + root_child0.getComputedHeight() + ")");
|
||||||
|
|
||||||
|
root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_RTL);
|
||||||
|
|
||||||
|
console.assert(0 === root.getComputedLeft(), "0 === root.getComputedLeft() (" + root.getComputedLeft() + ")");
|
||||||
|
console.assert(0 === root.getComputedTop(), "0 === root.getComputedTop() (" + root.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root.getComputedWidth(), "0 === root.getComputedWidth() (" + root.getComputedWidth() + ")");
|
||||||
|
console.assert(100 === root.getComputedHeight(), "100 === root.getComputedHeight() (" + root.getComputedHeight() + ")");
|
||||||
|
|
||||||
|
console.assert(0 === root_child0.getComputedLeft(), "0 === root_child0.getComputedLeft() (" + root_child0.getComputedLeft() + ")");
|
||||||
|
console.assert(0 === root_child0.getComputedTop(), "0 === root_child0.getComputedTop() (" + root_child0.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root_child0.getComputedWidth(), "0 === root_child0.getComputedWidth() (" + root_child0.getComputedWidth() + ")");
|
||||||
|
console.assert(100 === root_child0.getComputedHeight(), "100 === root_child0.getComputedHeight() (" + root_child0.getComputedHeight() + ")");
|
||||||
|
} finally {
|
||||||
|
if (typeof root !== "undefined") {
|
||||||
|
root.freeRecursive();
|
||||||
|
}
|
||||||
|
|
||||||
|
config.free();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
it("flex_grow_within_constrained_min_max_column", function () {
|
||||||
|
var config = Yoga.Config.create();
|
||||||
|
|
||||||
|
try {
|
||||||
|
var root = Yoga.Node.create(config);
|
||||||
|
root.setMinHeight(100);
|
||||||
|
root.setMaxHeight(200);
|
||||||
|
|
||||||
|
var root_child0 = Yoga.Node.create(config);
|
||||||
|
root_child0.setFlexGrow(1);
|
||||||
|
root.insertChild(root_child0, 0);
|
||||||
|
|
||||||
|
var root_child1 = Yoga.Node.create(config);
|
||||||
|
root_child1.setHeight(50);
|
||||||
|
root.insertChild(root_child1, 1);
|
||||||
|
root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR);
|
||||||
|
|
||||||
|
console.assert(0 === root.getComputedLeft(), "0 === root.getComputedLeft() (" + root.getComputedLeft() + ")");
|
||||||
|
console.assert(0 === root.getComputedTop(), "0 === root.getComputedTop() (" + root.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root.getComputedWidth(), "0 === root.getComputedWidth() (" + root.getComputedWidth() + ")");
|
||||||
|
console.assert(100 === root.getComputedHeight(), "100 === root.getComputedHeight() (" + root.getComputedHeight() + ")");
|
||||||
|
|
||||||
|
console.assert(0 === root_child0.getComputedLeft(), "0 === root_child0.getComputedLeft() (" + root_child0.getComputedLeft() + ")");
|
||||||
|
console.assert(0 === root_child0.getComputedTop(), "0 === root_child0.getComputedTop() (" + root_child0.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root_child0.getComputedWidth(), "0 === root_child0.getComputedWidth() (" + root_child0.getComputedWidth() + ")");
|
||||||
|
console.assert(50 === root_child0.getComputedHeight(), "50 === root_child0.getComputedHeight() (" + root_child0.getComputedHeight() + ")");
|
||||||
|
|
||||||
|
console.assert(0 === root_child1.getComputedLeft(), "0 === root_child1.getComputedLeft() (" + root_child1.getComputedLeft() + ")");
|
||||||
|
console.assert(50 === root_child1.getComputedTop(), "50 === root_child1.getComputedTop() (" + root_child1.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root_child1.getComputedWidth(), "0 === root_child1.getComputedWidth() (" + root_child1.getComputedWidth() + ")");
|
||||||
|
console.assert(50 === root_child1.getComputedHeight(), "50 === root_child1.getComputedHeight() (" + root_child1.getComputedHeight() + ")");
|
||||||
|
|
||||||
|
root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_RTL);
|
||||||
|
|
||||||
|
console.assert(0 === root.getComputedLeft(), "0 === root.getComputedLeft() (" + root.getComputedLeft() + ")");
|
||||||
|
console.assert(0 === root.getComputedTop(), "0 === root.getComputedTop() (" + root.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root.getComputedWidth(), "0 === root.getComputedWidth() (" + root.getComputedWidth() + ")");
|
||||||
|
console.assert(100 === root.getComputedHeight(), "100 === root.getComputedHeight() (" + root.getComputedHeight() + ")");
|
||||||
|
|
||||||
|
console.assert(0 === root_child0.getComputedLeft(), "0 === root_child0.getComputedLeft() (" + root_child0.getComputedLeft() + ")");
|
||||||
|
console.assert(0 === root_child0.getComputedTop(), "0 === root_child0.getComputedTop() (" + root_child0.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root_child0.getComputedWidth(), "0 === root_child0.getComputedWidth() (" + root_child0.getComputedWidth() + ")");
|
||||||
|
console.assert(50 === root_child0.getComputedHeight(), "50 === root_child0.getComputedHeight() (" + root_child0.getComputedHeight() + ")");
|
||||||
|
|
||||||
|
console.assert(0 === root_child1.getComputedLeft(), "0 === root_child1.getComputedLeft() (" + root_child1.getComputedLeft() + ")");
|
||||||
|
console.assert(50 === root_child1.getComputedTop(), "50 === root_child1.getComputedTop() (" + root_child1.getComputedTop() + ")");
|
||||||
|
console.assert(0 === root_child1.getComputedWidth(), "0 === root_child1.getComputedWidth() (" + root_child1.getComputedWidth() + ")");
|
||||||
|
console.assert(50 === root_child1.getComputedHeight(), "50 === root_child1.getComputedHeight() (" + root_child1.getComputedHeight() + ")");
|
||||||
|
} finally {
|
||||||
|
if (typeof root !== "undefined") {
|
||||||
|
root.freeRecursive();
|
||||||
|
}
|
||||||
|
|
||||||
|
config.free();
|
||||||
|
}
|
||||||
|
});
|
||||||
it("flex_grow_within_max_width", function () {
|
it("flex_grow_within_max_width", function () {
|
||||||
var config = Yoga.Config.create();
|
var config = Yoga.Config.create();
|
||||||
|
|
||||||
@@ -1013,114 +1112,3 @@ it("min_max_percent_no_width_height", function () {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
it("min_width_in_flex_distribution", function () {
|
|
||||||
var config = Yoga.Config.create();
|
|
||||||
|
|
||||||
try {
|
|
||||||
var root = Yoga.Node.create(config);
|
|
||||||
root.setFlexDirection(Yoga.FLEX_DIRECTION_ROW);
|
|
||||||
root.setWidth(300);
|
|
||||||
root.setHeight(300);
|
|
||||||
|
|
||||||
var root_child0 = Yoga.Node.create(config);
|
|
||||||
root_child0.setFlexGrow(2);
|
|
||||||
root_child0.setFlexShrink(1);
|
|
||||||
root_child0.setFlexBasis("0%");
|
|
||||||
root_child0.setMinWidth(100);
|
|
||||||
root_child0.setMaxWidth(200);
|
|
||||||
root.insertChild(root_child0, 0);
|
|
||||||
|
|
||||||
var root_child1 = Yoga.Node.create(config);
|
|
||||||
root_child1.setFlexGrow(1);
|
|
||||||
root_child1.setFlexShrink(1);
|
|
||||||
root_child1.setFlexBasis("0%");
|
|
||||||
root.insertChild(root_child1, 1);
|
|
||||||
|
|
||||||
var root_child2 = Yoga.Node.create(config);
|
|
||||||
root_child2.setFlexGrow(1);
|
|
||||||
root_child2.setFlexShrink(1);
|
|
||||||
root_child2.setFlexBasis("0%");
|
|
||||||
root.insertChild(root_child2, 2);
|
|
||||||
|
|
||||||
var root_child3 = Yoga.Node.create(config);
|
|
||||||
root_child3.setFlexGrow(1);
|
|
||||||
root_child3.setFlexShrink(1);
|
|
||||||
root_child3.setFlexBasis("0%");
|
|
||||||
root.insertChild(root_child3, 3);
|
|
||||||
|
|
||||||
var root_child4 = Yoga.Node.create(config);
|
|
||||||
root_child4.setFlexGrow(1);
|
|
||||||
root_child4.setFlexShrink(1);
|
|
||||||
root_child4.setFlexBasis("0%");
|
|
||||||
root.insertChild(root_child4, 4);
|
|
||||||
root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR);
|
|
||||||
|
|
||||||
console.assert(0 === root.getComputedLeft(), "0 === root.getComputedLeft() (" + root.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root.getComputedTop(), "0 === root.getComputedTop() (" + root.getComputedTop() + ")");
|
|
||||||
console.assert(300 === root.getComputedWidth(), "300 === root.getComputedWidth() (" + root.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root.getComputedHeight(), "300 === root.getComputedHeight() (" + root.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(0 === root_child0.getComputedLeft(), "0 === root_child0.getComputedLeft() (" + root_child0.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child0.getComputedTop(), "0 === root_child0.getComputedTop() (" + root_child0.getComputedTop() + ")");
|
|
||||||
console.assert(100 === root_child0.getComputedWidth(), "100 === root_child0.getComputedWidth() (" + root_child0.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child0.getComputedHeight(), "300 === root_child0.getComputedHeight() (" + root_child0.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(100 === root_child1.getComputedLeft(), "100 === root_child1.getComputedLeft() (" + root_child1.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child1.getComputedTop(), "0 === root_child1.getComputedTop() (" + root_child1.getComputedTop() + ")");
|
|
||||||
console.assert(50 === root_child1.getComputedWidth(), "50 === root_child1.getComputedWidth() (" + root_child1.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child1.getComputedHeight(), "300 === root_child1.getComputedHeight() (" + root_child1.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(150 === root_child2.getComputedLeft(), "150 === root_child2.getComputedLeft() (" + root_child2.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child2.getComputedTop(), "0 === root_child2.getComputedTop() (" + root_child2.getComputedTop() + ")");
|
|
||||||
console.assert(50 === root_child2.getComputedWidth(), "50 === root_child2.getComputedWidth() (" + root_child2.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child2.getComputedHeight(), "300 === root_child2.getComputedHeight() (" + root_child2.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(200 === root_child3.getComputedLeft(), "200 === root_child3.getComputedLeft() (" + root_child3.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child3.getComputedTop(), "0 === root_child3.getComputedTop() (" + root_child3.getComputedTop() + ")");
|
|
||||||
console.assert(50 === root_child3.getComputedWidth(), "50 === root_child3.getComputedWidth() (" + root_child3.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child3.getComputedHeight(), "300 === root_child3.getComputedHeight() (" + root_child3.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(250 === root_child4.getComputedLeft(), "250 === root_child4.getComputedLeft() (" + root_child4.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child4.getComputedTop(), "0 === root_child4.getComputedTop() (" + root_child4.getComputedTop() + ")");
|
|
||||||
console.assert(50 === root_child4.getComputedWidth(), "50 === root_child4.getComputedWidth() (" + root_child4.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child4.getComputedHeight(), "300 === root_child4.getComputedHeight() (" + root_child4.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_RTL);
|
|
||||||
|
|
||||||
console.assert(0 === root.getComputedLeft(), "0 === root.getComputedLeft() (" + root.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root.getComputedTop(), "0 === root.getComputedTop() (" + root.getComputedTop() + ")");
|
|
||||||
console.assert(300 === root.getComputedWidth(), "300 === root.getComputedWidth() (" + root.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root.getComputedHeight(), "300 === root.getComputedHeight() (" + root.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(200 === root_child0.getComputedLeft(), "200 === root_child0.getComputedLeft() (" + root_child0.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child0.getComputedTop(), "0 === root_child0.getComputedTop() (" + root_child0.getComputedTop() + ")");
|
|
||||||
console.assert(100 === root_child0.getComputedWidth(), "100 === root_child0.getComputedWidth() (" + root_child0.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child0.getComputedHeight(), "300 === root_child0.getComputedHeight() (" + root_child0.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(150 === root_child1.getComputedLeft(), "150 === root_child1.getComputedLeft() (" + root_child1.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child1.getComputedTop(), "0 === root_child1.getComputedTop() (" + root_child1.getComputedTop() + ")");
|
|
||||||
console.assert(50 === root_child1.getComputedWidth(), "50 === root_child1.getComputedWidth() (" + root_child1.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child1.getComputedHeight(), "300 === root_child1.getComputedHeight() (" + root_child1.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(100 === root_child2.getComputedLeft(), "100 === root_child2.getComputedLeft() (" + root_child2.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child2.getComputedTop(), "0 === root_child2.getComputedTop() (" + root_child2.getComputedTop() + ")");
|
|
||||||
console.assert(50 === root_child2.getComputedWidth(), "50 === root_child2.getComputedWidth() (" + root_child2.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child2.getComputedHeight(), "300 === root_child2.getComputedHeight() (" + root_child2.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(50 === root_child3.getComputedLeft(), "50 === root_child3.getComputedLeft() (" + root_child3.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child3.getComputedTop(), "0 === root_child3.getComputedTop() (" + root_child3.getComputedTop() + ")");
|
|
||||||
console.assert(50 === root_child3.getComputedWidth(), "50 === root_child3.getComputedWidth() (" + root_child3.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child3.getComputedHeight(), "300 === root_child3.getComputedHeight() (" + root_child3.getComputedHeight() + ")");
|
|
||||||
|
|
||||||
console.assert(0 === root_child4.getComputedLeft(), "0 === root_child4.getComputedLeft() (" + root_child4.getComputedLeft() + ")");
|
|
||||||
console.assert(0 === root_child4.getComputedTop(), "0 === root_child4.getComputedTop() (" + root_child4.getComputedTop() + ")");
|
|
||||||
console.assert(50 === root_child4.getComputedWidth(), "50 === root_child4.getComputedWidth() (" + root_child4.getComputedWidth() + ")");
|
|
||||||
console.assert(300 === root_child4.getComputedHeight(), "300 === root_child4.getComputedHeight() (" + root_child4.getComputedHeight() + ")");
|
|
||||||
} finally {
|
|
||||||
if (typeof root !== "undefined") {
|
|
||||||
root.freeRecursive();
|
|
||||||
}
|
|
||||||
|
|
||||||
config.free();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@@ -470,6 +470,99 @@ TEST(YogaTest, flex_grow_in_at_most_container) {
|
|||||||
YGConfigFree(config);
|
YGConfigFree(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(YogaTest, flex_grow_child) {
|
||||||
|
const YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
|
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||||
|
|
||||||
|
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetFlexGrow(root_child0, 1);
|
||||||
|
YGNodeStyleSetFlexBasis(root_child0, 0);
|
||||||
|
YGNodeStyleSetHeight(root_child0, 100);
|
||||||
|
YGNodeInsertChild(root, root_child0, 0);
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeFreeRecursive(root);
|
||||||
|
|
||||||
|
YGConfigFree(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(YogaTest, flex_grow_within_constrained_min_max_column) {
|
||||||
|
const YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
|
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetMinHeight(root, 100);
|
||||||
|
YGNodeStyleSetMaxHeight(root, 200);
|
||||||
|
|
||||||
|
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetFlexGrow(root_child0, 1);
|
||||||
|
YGNodeInsertChild(root, root_child0, 0);
|
||||||
|
|
||||||
|
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetHeight(root_child1, 50);
|
||||||
|
YGNodeInsertChild(root, root_child1, 1);
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
|
||||||
|
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
|
||||||
|
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1));
|
||||||
|
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetTop(root_child1));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetWidth(root_child1));
|
||||||
|
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child1));
|
||||||
|
|
||||||
|
YGNodeFreeRecursive(root);
|
||||||
|
|
||||||
|
YGConfigFree(config);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(YogaTest, flex_grow_within_max_width) {
|
TEST(YogaTest, flex_grow_within_max_width) {
|
||||||
const YGConfigRef config = YGConfigNew();
|
const YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
@@ -951,111 +1044,3 @@ TEST(YogaTest, min_max_percent_no_width_height) {
|
|||||||
|
|
||||||
YGConfigFree(config);
|
YGConfigFree(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, min_width_in_flex_distribution) {
|
|
||||||
const YGConfigRef config = YGConfigNew();
|
|
||||||
|
|
||||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
|
||||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
|
||||||
YGNodeStyleSetWidth(root, 300);
|
|
||||||
YGNodeStyleSetHeight(root, 300);
|
|
||||||
|
|
||||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
|
||||||
YGNodeStyleSetFlexGrow(root_child0, 2);
|
|
||||||
YGNodeStyleSetFlexShrink(root_child0, 1);
|
|
||||||
YGNodeStyleSetFlexBasisPercent(root_child0, 0);
|
|
||||||
YGNodeStyleSetMinWidth(root_child0, 100);
|
|
||||||
YGNodeStyleSetMaxWidth(root_child0, 200);
|
|
||||||
YGNodeInsertChild(root, root_child0, 0);
|
|
||||||
|
|
||||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
|
||||||
YGNodeStyleSetFlexGrow(root_child1, 1);
|
|
||||||
YGNodeStyleSetFlexShrink(root_child1, 1);
|
|
||||||
YGNodeStyleSetFlexBasisPercent(root_child1, 0);
|
|
||||||
YGNodeInsertChild(root, root_child1, 1);
|
|
||||||
|
|
||||||
const YGNodeRef root_child2 = YGNodeNewWithConfig(config);
|
|
||||||
YGNodeStyleSetFlexGrow(root_child2, 1);
|
|
||||||
YGNodeStyleSetFlexShrink(root_child2, 1);
|
|
||||||
YGNodeStyleSetFlexBasisPercent(root_child2, 0);
|
|
||||||
YGNodeInsertChild(root, root_child2, 2);
|
|
||||||
|
|
||||||
const YGNodeRef root_child3 = YGNodeNewWithConfig(config);
|
|
||||||
YGNodeStyleSetFlexGrow(root_child3, 1);
|
|
||||||
YGNodeStyleSetFlexShrink(root_child3, 1);
|
|
||||||
YGNodeStyleSetFlexBasisPercent(root_child3, 0);
|
|
||||||
YGNodeInsertChild(root, root_child3, 3);
|
|
||||||
|
|
||||||
const YGNodeRef root_child4 = YGNodeNewWithConfig(config);
|
|
||||||
YGNodeStyleSetFlexGrow(root_child4, 1);
|
|
||||||
YGNodeStyleSetFlexShrink(root_child4, 1);
|
|
||||||
YGNodeStyleSetFlexBasisPercent(root_child4, 0);
|
|
||||||
YGNodeInsertChild(root, root_child4, 4);
|
|
||||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
|
||||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child0));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child1));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child1));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(150, YGNodeLayoutGetLeft(root_child2));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child2));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child3));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child3));
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child3));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(250, YGNodeLayoutGetLeft(root_child4));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child4));
|
|
||||||
|
|
||||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(200, YGNodeLayoutGetLeft(root_child0));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
|
||||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child0));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(150, YGNodeLayoutGetLeft(root_child1));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child1));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetLeft(root_child2));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child2));
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child2));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child2));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child3));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child3));
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child3));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child3));
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child4));
|
|
||||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child4));
|
|
||||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child4));
|
|
||||||
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root_child4));
|
|
||||||
|
|
||||||
YGNodeFreeRecursive(root);
|
|
||||||
|
|
||||||
YGConfigFree(config);
|
|
||||||
}
|
|
||||||
|
@@ -2203,9 +2203,11 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
|||||||
availableInnerMainDim = minInnerMainDim;
|
availableInnerMainDim = minInnerMainDim;
|
||||||
} else if (!YGFloatIsUndefined(maxInnerMainDim) && sizeConsumedOnCurrentLine > maxInnerMainDim) {
|
} else if (!YGFloatIsUndefined(maxInnerMainDim) && sizeConsumedOnCurrentLine > maxInnerMainDim) {
|
||||||
availableInnerMainDim = maxInnerMainDim;
|
availableInnerMainDim = maxInnerMainDim;
|
||||||
} else if (YGConfigIsExperimentalFeatureEnabled(node->config, YGExperimentalFeatureMinFlexFix)) {
|
} else if (YGConfigIsExperimentalFeatureEnabled(node->config, YGExperimentalFeatureMinFlexFix) &&
|
||||||
|
(totalFlexGrowFactors == 0 || YGResolveFlexGrow(node) == 0)) {
|
||||||
// TODO: this needs to be moved out of experimental feature, as this is legitimate fix
|
// TODO: this needs to be moved out of experimental feature, as this is legitimate fix
|
||||||
// If the measurement isn't exact, we want to use as little space as possible
|
// If we don't have any children to flex or we can't flex the node itself,
|
||||||
|
// space we've used is all space we need
|
||||||
availableInnerMainDim = sizeConsumedOnCurrentLine;
|
availableInnerMainDim = sizeConsumedOnCurrentLine;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user