public void InitializeFromAnArrayAndSort1() { // Чтобы этот код скомпилировался, нужно создать ещё один // класс с именем BinaryTree, но уже без generic-аргументов. // Так делают, чтобы можно было не указывать тип-параметр при использовании. // Дело в том, что типы-параметры методов часто компилятор может // определить самостоятельно и их можно не указывать, // а типы-параметры у самого типа или его конструктора, указывать нужно всегда. // Пример применения такой техники в стандартной библиотеки — // это классы Tuple<T1, T2> и класс Tuple со статическим методоми Create<T1, T2>(...). var tree = BinaryTree.Create(4, 3, 2, 1); CollectionAssert.AreEqual(new[] { 1, 2, 3, 4 }, tree); }
public void EnumerationIsLazy() { var r = new Random(); var items = Enumerable.Range(0, 50000).Select(i => r.Next()); var tree = BinaryTree.Create(items.ToArray()); RunWithTimeout(1000, "tree.First() is too slow. Enumeration is not lazy?", () => { var sum = 0; for (int i = 0; i < 50000; i++) { sum += tree.First(); } }); }
public void CanStoreDefaultValueOfT() { var tree = BinaryTree.Create(1, 0, 2); CollectionAssert.AreEqual(new[] { 0, 1, 2 }, tree); }
public void InitializeFromAnArrayAndSort2() { var tree = BinaryTree.Create(2, 4, 1, 7, 3, 9, 5, 6, 8); CollectionAssert.AreEqual(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, tree); }