bool Sync(TestUniNode uniTree, TestUniNode uniNode, byte uniDepth, int uniIt, UFTree ufTree, Int64 ufNode, object userData) { Assert.AreEqual(uniDepth, ufTree.GetDepth(ufNode), String.Format("ufNode: {0}", ufNode)); TestUfTree tufTree = (TestUfTree)ufTree; Assert.AreEqual(uniDepth == 0 ? 0 : uniNode.ChildIndex + 1, uniIt); Assert.AreEqual(uniNode.Id, tufTree.Nodes[ufNode].Id); Assert.AreEqual("bla", userData); return(true); }
unsafe void CreateTestUfTree(TestUfTree tree, ref int nodeIdx, int curDepth, int depthLimit, int childCount) { if (curDepth > depthLimit) { return; } tree.SetDepth(nodeIdx, (byte)curDepth); tree.Nodes[nodeIdx].Id = nodeIdx++; for (int c = 0; c < childCount; ++c) { CreateTestUfTree(tree, ref nodeIdx, curDepth + 1, depthLimit, childCount); } }
public void Test_Sync() { int nodesCount = 1 + 4 + 4 * 4 + 4 * 4 * 4; int idx; TestUfTree ufTree = new TestUfTree(nodesCount); idx = 0; CreateTestUfTree(ufTree, ref idx, 0, 3, 4); TestUniNode uniRoot = new TestUniNode(); idx = 0; CreateTestUniTree(uniRoot, ref idx, 0, 3, 4); string userData = "bla"; SyncUniAndUF <int> .Sync(uniRoot, ufTree, Sync, userData); }