Esempio n. 1
0
        [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));
        }
Esempio n. 2
0
        [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));
        }
Esempio n. 3
0
        [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));
        }