[Test] public void flex_shrink_to_zero() { YGConfig config = YGConfigNew(); YGNode root = YGNodeNewWithConfig(config); YGNodeStyleSetHeight(root, 75); YGNode root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child0, 50); YGNodeStyleSetHeight(root_child0, 50); YGNodeInsertChild(root, root_child0, 0); YGNode root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexShrink(root_child1, 1); YGNodeStyleSetWidth(root_child1, 50); YGNodeStyleSetHeight(root_child1, 50); YGNodeInsertChild(root, root_child1, 1); YGNode root_child2 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child2, 50); YGNodeStyleSetHeight(root_child2, 50); YGNodeInsertChild(root, root_child2, 2); YGNodeCalculateLayout(root, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root)); Assert.AreEqual(75, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child1)); Assert.AreEqual(50, YGNodeLayoutGetTop(root_child1)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child1)); Assert.AreEqual(0, YGNodeLayoutGetHeight(root_child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child2)); Assert.AreEqual(50, YGNodeLayoutGetTop(root_child2)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child2)); Assert.AreEqual(50, YGNodeLayoutGetHeight(root_child2)); YGNodeCalculateLayout(root, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root)); Assert.AreEqual(75, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child1)); Assert.AreEqual(50, YGNodeLayoutGetTop(root_child1)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child1)); Assert.AreEqual(0, YGNodeLayoutGetHeight(root_child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child2)); Assert.AreEqual(50, YGNodeLayoutGetTop(root_child2)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child2)); Assert.AreEqual(50, YGNodeLayoutGetHeight(root_child2)); }
[Test] public void android_news_feed() { YGConfig config = YGConfigNew(); YGNode root = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent(root, YGAlign.Stretch); YGNodeStyleSetWidth(root, 1080); YGNode root_child0 = YGNodeNewWithConfig(config); YGNodeInsertChild(root, root_child0, 0); YGNode root_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent(root_child0_child0, YGAlign.Stretch); YGNodeInsertChild(root_child0, root_child0_child0, 0); YGNode root_child0_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent(root_child0_child0_child0, YGAlign.Stretch); YGNodeInsertChild(root_child0_child0, root_child0_child0_child0, 0); YGNode root_child0_child0_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection( root_child0_child0_child0_child0, YGFlexDirection.Row); YGNodeStyleSetAlignContent(root_child0_child0_child0_child0, YGAlign.Stretch); YGNodeStyleSetAlignItems(root_child0_child0_child0_child0, YGAlign.FlexStart); YGNodeStyleSetMargin(root_child0_child0_child0_child0, YGEdge.Start, 36); YGNodeStyleSetMargin(root_child0_child0_child0_child0, YGEdge.Top, 24); YGNodeInsertChild( root_child0_child0_child0, root_child0_child0_child0_child0, 0); YGNode root_child0_child0_child0_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection( root_child0_child0_child0_child0_child0, YGFlexDirection.Row); YGNodeStyleSetAlignContent( root_child0_child0_child0_child0_child0, YGAlign.Stretch); YGNodeInsertChild( root_child0_child0_child0_child0, root_child0_child0_child0_child0_child0, 0); YGNode root_child0_child0_child0_child0_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent( root_child0_child0_child0_child0_child0_child0, YGAlign.Stretch); YGNodeStyleSetWidth(root_child0_child0_child0_child0_child0_child0, 120); YGNodeStyleSetHeight(root_child0_child0_child0_child0_child0_child0, 120); YGNodeInsertChild( root_child0_child0_child0_child0_child0, root_child0_child0_child0_child0_child0_child0, 0); YGNode root_child0_child0_child0_child0_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent( root_child0_child0_child0_child0_child1, YGAlign.Stretch); YGNodeStyleSetFlexShrink(root_child0_child0_child0_child0_child1, 1); YGNodeStyleSetMargin( root_child0_child0_child0_child0_child1, YGEdge.Right, 36); YGNodeStyleSetPadding( root_child0_child0_child0_child0_child1, YGEdge.Left, 36); YGNodeStyleSetPadding(root_child0_child0_child0_child0_child1, YGEdge.Top, 21); YGNodeStyleSetPadding( root_child0_child0_child0_child0_child1, YGEdge.Right, 36); YGNodeStyleSetPadding( root_child0_child0_child0_child0_child1, YGEdge.Bottom, 18); YGNodeInsertChild( root_child0_child0_child0_child0, root_child0_child0_child0_child0_child1, 1); YGNode root_child0_child0_child0_child0_child1_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection( root_child0_child0_child0_child0_child1_child0, YGFlexDirection.Row); YGNodeStyleSetAlignContent( root_child0_child0_child0_child0_child1_child0, YGAlign.Stretch); YGNodeStyleSetFlexShrink(root_child0_child0_child0_child0_child1_child0, 1); YGNodeInsertChild( root_child0_child0_child0_child0_child1, root_child0_child0_child0_child0_child1_child0, 0); YGNode root_child0_child0_child0_child0_child1_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent( root_child0_child0_child0_child0_child1_child1, YGAlign.Stretch); YGNodeStyleSetFlexShrink(root_child0_child0_child0_child0_child1_child1, 1); YGNodeInsertChild( root_child0_child0_child0_child0_child1, root_child0_child0_child0_child0_child1_child1, 1); YGNode root_child0_child0_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent(root_child0_child0_child1, YGAlign.Stretch); YGNodeInsertChild(root_child0_child0, root_child0_child0_child1, 1); YGNode root_child0_child0_child1_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection( root_child0_child0_child1_child0, YGFlexDirection.Row); YGNodeStyleSetAlignContent(root_child0_child0_child1_child0, YGAlign.Stretch); YGNodeStyleSetAlignItems(root_child0_child0_child1_child0, YGAlign.FlexStart); YGNodeStyleSetMargin(root_child0_child0_child1_child0, YGEdge.Start, 174); YGNodeStyleSetMargin(root_child0_child0_child1_child0, YGEdge.Top, 24); YGNodeInsertChild( root_child0_child0_child1, root_child0_child0_child1_child0, 0); YGNode root_child0_child0_child1_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection( root_child0_child0_child1_child0_child0, YGFlexDirection.Row); YGNodeStyleSetAlignContent( root_child0_child0_child1_child0_child0, YGAlign.Stretch); YGNodeInsertChild( root_child0_child0_child1_child0, root_child0_child0_child1_child0_child0, 0); YGNode root_child0_child0_child1_child0_child0_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent( root_child0_child0_child1_child0_child0_child0, YGAlign.Stretch); YGNodeStyleSetWidth(root_child0_child0_child1_child0_child0_child0, 72); YGNodeStyleSetHeight(root_child0_child0_child1_child0_child0_child0, 72); YGNodeInsertChild( root_child0_child0_child1_child0_child0, root_child0_child0_child1_child0_child0_child0, 0); YGNode root_child0_child0_child1_child0_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent( root_child0_child0_child1_child0_child1, YGAlign.Stretch); YGNodeStyleSetFlexShrink(root_child0_child0_child1_child0_child1, 1); YGNodeStyleSetMargin( root_child0_child0_child1_child0_child1, YGEdge.Right, 36); YGNodeStyleSetPadding( root_child0_child0_child1_child0_child1, YGEdge.Left, 36); YGNodeStyleSetPadding(root_child0_child0_child1_child0_child1, YGEdge.Top, 21); YGNodeStyleSetPadding( root_child0_child0_child1_child0_child1, YGEdge.Right, 36); YGNodeStyleSetPadding( root_child0_child0_child1_child0_child1, YGEdge.Bottom, 18); YGNodeInsertChild( root_child0_child0_child1_child0, root_child0_child0_child1_child0_child1, 1); YGNode root_child0_child0_child1_child0_child1_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection( root_child0_child0_child1_child0_child1_child0, YGFlexDirection.Row); YGNodeStyleSetAlignContent( root_child0_child0_child1_child0_child1_child0, YGAlign.Stretch); YGNodeStyleSetFlexShrink(root_child0_child0_child1_child0_child1_child0, 1); YGNodeInsertChild( root_child0_child0_child1_child0_child1, root_child0_child0_child1_child0_child1_child0, 0); YGNode root_child0_child0_child1_child0_child1_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignContent( root_child0_child0_child1_child0_child1_child1, YGAlign.Stretch); YGNodeStyleSetFlexShrink(root_child0_child0_child1_child0_child1_child1, 1); YGNodeInsertChild( root_child0_child0_child1_child0_child1, root_child0_child0_child1_child0_child1_child1, 1); YGNodeCalculateLayout(root, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root)); Assert.AreEqual(240, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root_child0)); Assert.AreEqual(240, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0_child0)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root_child0_child0)); Assert.AreEqual(240, YGNodeLayoutGetHeight(root_child0_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0_child0_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0_child0_child0)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root_child0_child0_child0)); Assert.AreEqual(144, YGNodeLayoutGetHeight(root_child0_child0_child0)); Assert.AreEqual(36, YGNodeLayoutGetLeft(root_child0_child0_child0_child0)); Assert.AreEqual(24, YGNodeLayoutGetTop(root_child0_child0_child0_child0)); Assert.AreEqual(1044, YGNodeLayoutGetWidth(root_child0_child0_child0_child0)); Assert.AreEqual(120, YGNodeLayoutGetHeight(root_child0_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child1)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child1)); Assert.AreEqual( 72, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child1)); Assert.AreEqual( 39, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child1)); Assert.AreEqual( 36, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child1_child0)); Assert.AreEqual( 21, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child1_child0)); Assert.AreEqual( 36, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child1_child1)); Assert.AreEqual( 21, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child1_child1)); Assert.AreEqual( 0, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child1_child1)); Assert.AreEqual( 0, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child1_child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0_child0_child1)); Assert.AreEqual(144, YGNodeLayoutGetTop(root_child0_child0_child1)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root_child0_child0_child1)); Assert.AreEqual(96, YGNodeLayoutGetHeight(root_child0_child0_child1)); Assert.AreEqual(174, YGNodeLayoutGetLeft(root_child0_child0_child1_child0)); Assert.AreEqual(24, YGNodeLayoutGetTop(root_child0_child0_child1_child0)); Assert.AreEqual(906, YGNodeLayoutGetWidth(root_child0_child0_child1_child0)); Assert.AreEqual(72, YGNodeLayoutGetHeight(root_child0_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child1)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child1)); Assert.AreEqual( 72, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child1)); Assert.AreEqual( 39, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child1)); Assert.AreEqual( 36, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child1_child0)); Assert.AreEqual( 21, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child1_child0)); Assert.AreEqual( 36, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child1_child1)); Assert.AreEqual( 21, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child1_child1)); Assert.AreEqual( 0, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child1_child1)); Assert.AreEqual( 0, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child1_child1)); YGNodeCalculateLayout(root, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root)); Assert.AreEqual(240, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root_child0)); Assert.AreEqual(240, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0_child0)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root_child0_child0)); Assert.AreEqual(240, YGNodeLayoutGetHeight(root_child0_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0_child0_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0_child0_child0)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root_child0_child0_child0)); Assert.AreEqual(144, YGNodeLayoutGetHeight(root_child0_child0_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0_child0_child0_child0)); Assert.AreEqual(24, YGNodeLayoutGetTop(root_child0_child0_child0_child0)); Assert.AreEqual(1044, YGNodeLayoutGetWidth(root_child0_child0_child0_child0)); Assert.AreEqual(120, YGNodeLayoutGetHeight(root_child0_child0_child0_child0)); Assert.AreEqual( 924, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child0_child0)); Assert.AreEqual( 120, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child0_child0)); Assert.AreEqual( 816, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child1)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child1)); Assert.AreEqual( 72, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child1)); Assert.AreEqual( 39, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child1)); Assert.AreEqual( 36, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child1_child0)); Assert.AreEqual( 21, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child1_child0)); Assert.AreEqual( 36, YGNodeLayoutGetLeft(root_child0_child0_child0_child0_child1_child1)); Assert.AreEqual( 21, YGNodeLayoutGetTop(root_child0_child0_child0_child0_child1_child1)); Assert.AreEqual( 0, YGNodeLayoutGetWidth(root_child0_child0_child0_child0_child1_child1)); Assert.AreEqual( 0, YGNodeLayoutGetHeight(root_child0_child0_child0_child0_child1_child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0_child0_child1)); Assert.AreEqual(144, YGNodeLayoutGetTop(root_child0_child0_child1)); Assert.AreEqual(1080, YGNodeLayoutGetWidth(root_child0_child0_child1)); Assert.AreEqual(96, YGNodeLayoutGetHeight(root_child0_child0_child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0_child0_child1_child0)); Assert.AreEqual(24, YGNodeLayoutGetTop(root_child0_child0_child1_child0)); Assert.AreEqual(906, YGNodeLayoutGetWidth(root_child0_child0_child1_child0)); Assert.AreEqual(72, YGNodeLayoutGetHeight(root_child0_child0_child1_child0)); Assert.AreEqual( 834, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child0_child0)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child0_child0)); Assert.AreEqual( 72, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child0_child0)); Assert.AreEqual( 726, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child1)); Assert.AreEqual( 0, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child1)); Assert.AreEqual( 72, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child1)); Assert.AreEqual( 39, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child1)); Assert.AreEqual( 36, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child1_child0)); Assert.AreEqual( 21, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child1_child0)); Assert.AreEqual( 0, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child1_child0)); Assert.AreEqual( 36, YGNodeLayoutGetLeft(root_child0_child0_child1_child0_child1_child1)); Assert.AreEqual( 21, YGNodeLayoutGetTop(root_child0_child0_child1_child0_child1_child1)); Assert.AreEqual( 0, YGNodeLayoutGetWidth(root_child0_child0_child1_child0_child1_child1)); Assert.AreEqual( 0, YGNodeLayoutGetHeight(root_child0_child0_child1_child0_child1_child1)); }
[Test] public void assert_default_values() { YGNode root = YGNodeNew(); Assert.AreEqual(0, YGNodeGetChildCount(root)); Assert.AreEqual(YGDirection.Inherit, YGNodeStyleGetDirection(root)); Assert.AreEqual(YGFlexDirection.Column, YGNodeStyleGetFlexDirection(root)); Assert.AreEqual(YGJustify.FlexStart, YGNodeStyleGetJustifyContent(root)); Assert.AreEqual(YGAlign.FlexStart, YGNodeStyleGetAlignContent(root)); Assert.AreEqual(YGAlign.Stretch, YGNodeStyleGetAlignItems(root)); Assert.AreEqual(YGAlign.Auto, YGNodeStyleGetAlignSelf(root)); Assert.AreEqual(YGPositionType.Relative, YGNodeStyleGetPositionType(root)); Assert.AreEqual(YGWrap.NoWrap, YGNodeStyleGetFlexWrap(root)); Assert.AreEqual(YGOverflow.Visible, YGNodeStyleGetOverflow(root)); Assert.AreEqual(0, YGNodeStyleGetFlexGrow(root)); Assert.AreEqual(0, YGNodeStyleGetFlexShrink(root)); Assert.AreEqual(YGUnit.Auto, YGNodeStyleGetFlexBasis(root).unit); Assert.AreEqual(YGNodeStyleGetPosition(root, YGEdge.Left).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPosition(root, YGEdge.Top).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPosition(root, YGEdge.Right).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPosition(root, YGEdge.Bottom).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPosition(root, YGEdge.Start).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPosition(root, YGEdge.End).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMargin(root, YGEdge.Left).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMargin(root, YGEdge.Top).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMargin(root, YGEdge.Right).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMargin(root, YGEdge.Bottom).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMargin(root, YGEdge.Start).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMargin(root, YGEdge.End).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPadding(root, YGEdge.Left).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPadding(root, YGEdge.Top).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPadding(root, YGEdge.Right).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPadding(root, YGEdge.Bottom).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPadding(root, YGEdge.Start).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetPadding(root, YGEdge.End).unit, YGUnit.Undefined); Assert.IsTrue(YogaIsUndefined(YGNodeStyleGetBorder(root, YGEdge.Left))); Assert.IsTrue(YogaIsUndefined(YGNodeStyleGetBorder(root, YGEdge.Top))); Assert.IsTrue(YogaIsUndefined(YGNodeStyleGetBorder(root, YGEdge.Right))); Assert.IsTrue(YogaIsUndefined(YGNodeStyleGetBorder(root, YGEdge.Bottom))); Assert.IsTrue(YogaIsUndefined(YGNodeStyleGetBorder(root, YGEdge.Start))); Assert.IsTrue(YogaIsUndefined(YGNodeStyleGetBorder(root, YGEdge.End))); Assert.AreEqual(YGNodeStyleGetWidth(root).unit, YGUnit.Auto); Assert.AreEqual(YGNodeStyleGetHeight(root).unit, YGUnit.Auto); Assert.AreEqual(YGNodeStyleGetMinWidth(root).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMinHeight(root).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMaxWidth(root).unit, YGUnit.Undefined); Assert.AreEqual(YGNodeStyleGetMaxHeight(root).unit, YGUnit.Undefined); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(0, YGNodeLayoutGetRight(root)); Assert.AreEqual(0, YGNodeLayoutGetBottom(root)); Assert.AreEqual(0, YGNodeLayoutGetMargin(root, YGEdge.Left)); Assert.AreEqual(0, YGNodeLayoutGetMargin(root, YGEdge.Top)); Assert.AreEqual(0, YGNodeLayoutGetMargin(root, YGEdge.Right)); Assert.AreEqual(0, YGNodeLayoutGetMargin(root, YGEdge.Bottom)); Assert.AreEqual(0, YGNodeLayoutGetPadding(root, YGEdge.Left)); Assert.AreEqual(0, YGNodeLayoutGetPadding(root, YGEdge.Top)); Assert.AreEqual(0, YGNodeLayoutGetPadding(root, YGEdge.Right)); Assert.AreEqual(0, YGNodeLayoutGetPadding(root, YGEdge.Bottom)); Assert.AreEqual(0, YGNodeLayoutGetBorder(root, YGEdge.Left)); Assert.AreEqual(0, YGNodeLayoutGetBorder(root, YGEdge.Top)); Assert.AreEqual(0, YGNodeLayoutGetBorder(root, YGEdge.Right)); Assert.AreEqual(0, YGNodeLayoutGetBorder(root, YGEdge.Bottom)); Assert.IsTrue(YogaIsUndefined(YGNodeLayoutGetWidth(root))); Assert.IsTrue(YogaIsUndefined(YGNodeLayoutGetHeight(root))); Assert.AreEqual(YGDirection.Inherit, YGNodeLayoutGetDirection(root)); }
[Test] public void align_self_baseline() { YGConfig config = YGConfigNew(); YGNode root = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection(root, YGFlexDirection.Row); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNode root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignSelf(root_child0, YGAlign.Baseline); YGNodeStyleSetWidth(root_child0, 50); YGNodeStyleSetHeight(root_child0, 50); YGNodeInsertChild(root, root_child0, 0); YGNode root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetAlignSelf(root_child1, YGAlign.Baseline); YGNodeStyleSetWidth(root_child1, 50); YGNodeStyleSetHeight(root_child1, 20); YGNodeInsertChild(root, root_child1, 1); YGNode root_child1_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root_child1_child0, 50); YGNodeStyleSetHeight(root_child1_child0, 10); YGNodeInsertChild(root_child1, root_child1_child0, 0); YGNodeCalculateLayout(root, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetLeft(root_child1)); Assert.AreEqual(40, YGNodeLayoutGetTop(root_child1)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child1)); Assert.AreEqual(20, YGNodeLayoutGetHeight(root_child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child1_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child1_child0)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child1_child0)); Assert.AreEqual(10, YGNodeLayoutGetHeight(root_child1_child0)); YGNodeCalculateLayout(root, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(50, YGNodeLayoutGetLeft(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child0)); Assert.AreEqual(50, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child1)); Assert.AreEqual(40, YGNodeLayoutGetTop(root_child1)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child1)); Assert.AreEqual(20, YGNodeLayoutGetHeight(root_child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child1_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child1_child0)); Assert.AreEqual(50, YGNodeLayoutGetWidth(root_child1_child0)); Assert.AreEqual(10, YGNodeLayoutGetHeight(root_child1_child0)); }
[Test] public void cloning_two_levels() { YGConfig config = YGConfigNew(); YGConfigSetPrintTreeFlag(config, true); YGNode root = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNode root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(root_child0, 1); YGNodeStyleSetFlexBasis(root_child0, 15); YGNodeInsertChild(root, root_child0, 0); YGNode root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(root_child1, 1); YGNodeInsertChild(root, root_child1, 1); YGNode root_child1_0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexBasis(root_child1_0, 10); YGNodeStyleSetFlexGrow(root_child1_0, 1); YGNodeInsertChild(root_child1, root_child1_0, 0); YGNode root_child1_1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexBasis(root_child1_1, 25); YGNodeInsertChild(root_child1, root_child1_1, 1); YGNodeCalculateLayout(root, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.LTR); Assert.AreEqual(40, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(60, YGNodeLayoutGetHeight(root_child1)); Assert.AreEqual(35, YGNodeLayoutGetHeight(root_child1_0)); Assert.AreEqual(25, YGNodeLayoutGetHeight(root_child1_1)); YGNode root2_child0 = YGNodeClone(root_child0); YGNode root2_child1 = YGNodeClone(root_child1); YGNode root2 = YGNodeClone(root); YGNodeStyleSetFlexGrow(root2_child0, 0); YGNodeStyleSetFlexBasis(root2_child0, 40); YGNodeRemoveAllChildren(root2); YGNodeInsertChild(root2, root2_child0, 0); YGNodeInsertChild(root2, root2_child1, 1); Assert.AreEqual(2, YGNodeGetChildCount(root2)); YGNodeCalculateLayout(root2, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.LTR); // Original root is unchanged Assert.AreEqual(40, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(60, YGNodeLayoutGetHeight(root_child1)); Assert.AreEqual(35, YGNodeLayoutGetHeight(root_child1_0)); Assert.AreEqual(25, YGNodeLayoutGetHeight(root_child1_1)); // New root has new layout at the top Assert.AreEqual(40, YGNodeLayoutGetHeight(root2_child0)); Assert.AreEqual(60, YGNodeLayoutGetHeight(root2_child1)); // The deeper children are untouched. Assert.AreEqual(root_child1_0, root2_child1.Children[0]); Assert.AreEqual(root_child1_1, root2_child1.Children[1]); }
[Test] public void cloning_shared_root() { YGConfig config = YGConfigNew(); YGConfigSetPrintTreeFlag(config, true); YGNode root = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YGNode root_child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(root_child0, 1); YGNodeStyleSetFlexBasis(root_child0, 50); YGNodeInsertChild(root, root_child0, 0); YGNode root_child1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(root_child1, 1); YGNodeInsertChild(root, root_child1, 1); YGNodeCalculateLayout(root, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root_child0)); Assert.AreEqual(75, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child1)); Assert.AreEqual(75, YGNodeLayoutGetTop(root_child1)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root_child1)); Assert.AreEqual(25, YGNodeLayoutGetHeight(root_child1)); YGNode root2 = YGNodeClone(root); YGNodeStyleSetWidth(root2, 100); Assert.AreEqual(2, YGNodeGetChildCount(root2)); // The children should have referential equality at this point. Assert.AreEqual(root_child0, root2.Children[0]); Assert.AreEqual(root_child1, root2.Children[1]); YGNodeCalculateLayout(root2, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.LTR); Assert.AreEqual(2, YGNodeGetChildCount(root2)); // Relayout with no changed input should result in referential equality. Assert.AreEqual(root_child0, root2.Children[0]); Assert.AreEqual(root_child1, root2.Children[1]); YGNodeStyleSetWidth(root2, 150); YGNodeStyleSetHeight(root2, 200); YGNodeCalculateLayout(root2, YGValue.YGUndefined, YGValue.YGUndefined, YGDirection.LTR); Assert.AreEqual(2, YGNodeGetChildCount(root2)); // Relayout with changed input should result in cloned children. YGNode root2_child0 = root2.Children[0]; YGNode root2_child1 = root2.Children[1]; Assert.AreNotEqual(root_child0, root2_child0); Assert.AreNotEqual(root_child1, root2_child1); // Everything in the root should remain unchanged. Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root_child0)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root_child0)); Assert.AreEqual(75, YGNodeLayoutGetHeight(root_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root_child1)); Assert.AreEqual(75, YGNodeLayoutGetTop(root_child1)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root_child1)); Assert.AreEqual(25, YGNodeLayoutGetHeight(root_child1)); // The new root now has new layout. Assert.AreEqual(0, YGNodeLayoutGetLeft(root2)); Assert.AreEqual(0, YGNodeLayoutGetTop(root2)); Assert.AreEqual(150, YGNodeLayoutGetWidth(root2)); Assert.AreEqual(200, YGNodeLayoutGetHeight(root2)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root2_child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(root2_child0)); Assert.AreEqual(150, YGNodeLayoutGetWidth(root2_child0)); Assert.AreEqual(125, YGNodeLayoutGetHeight(root2_child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(root2_child1)); Assert.AreEqual(125, YGNodeLayoutGetTop(root2_child1)); Assert.AreEqual(150, YGNodeLayoutGetWidth(root2_child1)); Assert.AreEqual(75, YGNodeLayoutGetHeight(root2_child1)); }