private static bool compareAndVerify(IList <int> list, AVLTreeSorted <int> tree) { if (!areEqual(list, tree)) { return(false); } int treeNodesCount; bool ok = AVLTreeSorted <int> .verify(tree.root, out treeNodesCount); if (ok && treeNodesCount == tree.Count) { return(true); } return(false); }
public static bool UnitTest() { int n = 10 * 1000; int randomSeed = 123455; Random randomList = new Random(randomSeed); Random randomTree = new Random(randomSeed); List <int> list = new List <int>(); AVLTreeSorted <int> tree = new AVLTreeSorted <int>(); bool ok; TimeSpan timeIndexOfList = getIndexOfTime(list, n, randomList); TimeSpan timeIndexOfTree = getIndexOfTime(tree, n, randomTree); ok = compareAndVerify(list, tree); if (!ok) { return(false); } TimeSpan timeDeleteList = getDeleteTime(list, list.Count, randomList); TimeSpan timeDeleteTree = getDeleteTime(tree, tree.Count, randomTree); ok = compareAndVerify(list, tree); if (!ok) { return(false); } TimeSpan timeInsertList = getAddTime(list, n, randomList, () => list.Sort()); TimeSpan timeInsertTree = getAddTime(tree, n, randomTree, () => { }); ok = compareAndVerify(list, tree); if (!ok) { return(false); } timeDeleteList += getDeleteTime(list, n / 2, randomList); timeDeleteTree += getDeleteTime(tree, n / 2, randomTree); ok = compareAndVerify(list, tree); if (!ok) { return(false); } int[] array = new int[list.Count + 100]; tree.CopyTo(array, 100); ok = areEqual(array.Skip(100).ToList(), list); if (!ok) { return(false); } List <int> enumeratorList = new List <int>(); foreach (int item in tree) { enumeratorList.Add(item); } ok = areEqual(enumeratorList, list); if (!ok) { return(false); } timeDeleteList += getDeleteTime(list, n / 2, randomList); timeDeleteTree += getDeleteTime(tree, n / 2, randomTree); ok = compareAndVerify(list, tree); if (!ok) { return(false); } return(true); }