public void TestChildren() { YogaNode parent = new YogaNode(); foreach (YogaNode node in parent) { Assert.Fail(node.ToString()); } YogaNode child0 = new YogaNode(); Assert.AreEqual(-1, parent.IndexOf(child0)); parent.Insert(0, child0); foreach (YogaNode node in parent) { Assert.AreEqual(0, parent.IndexOf(node)); } YogaNode child1 = new YogaNode(); parent.Insert(1, child1); int index = 0; foreach (YogaNode node in parent) { Assert.AreEqual(index++, parent.IndexOf(node)); } parent.RemoveAt(0); Assert.AreEqual(-1, parent.IndexOf(child0)); Assert.AreEqual(0, parent.IndexOf(child1)); parent.Clear(); Assert.AreEqual(0, parent.Count); parent.Clear(); Assert.AreEqual(0, parent.Count); }
/// <summary> /// Replaces a child Yoga node with a new one /// </summary> /// <param name="oldNode">Old Yoga node child.</param> /// <param name="newNode">New Yoga node child.</param> public void ReplaceYogaNode(YogaNode oldNode, YogaNode newNode) { if (_yogaNode == null) { throw new InvalidOperationException( "Cannot replace a Yoga child node when there's no parent!"); } int index = _yogaNode.IndexOf(oldNode); if (index < 0) { throw new InvalidOperationException( "Yoga child node is not present in parent!"); } _yogaNode.RemoveAt(index); _yogaNode.Insert(index, newNode); }