public void set_children_replaces_non_common_children()
        {
            YGNode root        = YGNodeNew();
            YGNode root_child0 = YGNodeNew();
            YGNode root_child1 = YGNodeNew();
            YGNode root_child2 = YGNodeNew();
            YGNode root_child3 = YGNodeNew();

            root_child0.setLineIndex(0);
            root_child1.setLineIndex(1);
            root_child2.setLineIndex(2);
            root_child3.setLineIndex(3);

            YGNodeSetChildren(root, new List <YGNode> {
                root_child0, root_child1
            });

            YGNodeSetChildren(root, new List <YGNode> {
                root_child2, root_child3
            });

            List <YGNode> children         = getChildren(root);
            List <YGNode> expectedChildren = new List <YGNode> {
                root_child2, root_child3
            };

            Assert.AreEqual(children, expectedChildren);

            List <YGNode> owners = new List <YGNode> {
                YGNodeGetOwner(root_child0), YGNodeGetOwner(root_child1)
            };
            List <YGNode> expectedOwners = new List <YGNode> {
                null, null
            };

            Assert.AreEqual(owners, expectedOwners);
        }
        public void set_children_keeps_and_reorders_common_children()
        {
            YGNode root        = YGNodeNew();
            YGNode root_child0 = YGNodeNew();
            YGNode root_child1 = YGNodeNew();
            YGNode root_child2 = YGNodeNew();
            YGNode root_child3 = YGNodeNew();

            root_child0.setLineIndex(0);
            root_child1.setLineIndex(1);
            root_child2.setLineIndex(2);
            root_child3.setLineIndex(3);

            YGNodeSetChildren(root, new YGNode[] { root_child0, root_child1, root_child2 });

            YGNodeSetChildren(root, new YGNode[] { root_child2, root_child1, root_child3 });

            List <YGNode> children         = getChildren(root);
            List <YGNode> expectedChildren = new List <YGNode> {
                root_child2, root_child1, root_child3
            };

            Assert.AreEqual(children, expectedChildren);

            List <YGNode> owners = new List <YGNode>
            {
                YGNodeGetOwner(root_child0),
                YGNodeGetOwner(root_child1),
                YGNodeGetOwner(root_child2),
                YGNodeGetOwner(root_child3)
            };
            var expectedOwners = new List <YGNode> {
                null, root, root, root
            };

            Assert.AreEqual(owners, expectedOwners);
        }