public void TestToString() { Assert.Equal("[50, 100)", new TreeSpan(50, 50).ToString()); Assert.Equal("[50, 100)", TreeSpan.FromBounds(50, 100).ToString()); Assert.Equal("[50, 100)", TreeSpan.FromReverseSpan(99, 50).ToString()); Assert.Equal("[-1, -1)", TreeSpan.Invalid.ToString()); }
public void TestIEquatable() { IEquatable <TreeSpan> treeSpan = TreeSpan.Invalid; Assert.True(treeSpan.Equals(TreeSpan.Invalid)); treeSpan = new TreeSpan(50, 50); Assert.True(treeSpan.Equals(TreeSpan.FromBounds(50, 100))); }
public void TestIsProperSubspanOf() { Assert.True(TreeSpan.FromBounds(40, 50).IsProperSubspanOf(TreeSpan.FromBounds(35, 55))); Assert.True(TreeSpan.FromBounds(40, 50).IsProperSubspanOf(TreeSpan.FromBounds(35, 50))); Assert.True(TreeSpan.FromBounds(40, 50).IsProperSubspanOf(TreeSpan.FromBounds(40, 55))); Assert.False(TreeSpan.FromBounds(40, 50).IsProperSubspanOf(TreeSpan.FromBounds(40, 50))); Assert.False(TreeSpan.FromBounds(40, 50).IsProperSubspanOf(TreeSpan.FromBounds(35, 45))); Assert.False(TreeSpan.FromBounds(40, 50).IsProperSubspanOf(TreeSpan.FromBounds(45, 55))); Assert.False(TreeSpan.FromBounds(40, 50).IsProperSubspanOf(TreeSpan.FromBounds(41, 49))); }
public void TestIntersect() { var treeSpan = TreeSpan.Intersect(TreeSpan.Invalid, TreeSpan.Invalid); Assert.Equal(TreeSpan.Invalid, treeSpan); treeSpan = TreeSpan.Intersect(TreeSpan.FromBounds(45, 50), TreeSpan.FromBounds(50, 60)); Assert.Equal(TreeSpan.FromBounds(50, 50), treeSpan); treeSpan = TreeSpan.Intersect(TreeSpan.FromBounds(40, 45), TreeSpan.FromBounds(50, 55)); Assert.Equal(TreeSpan.Invalid, treeSpan); }
public void TestFromBounds() { var treeSpan = TreeSpan.FromBounds(50, 100); Assert.Equal(50, treeSpan.Start); Assert.Equal(100, treeSpan.EndExclusive); Assert.Equal(50, treeSpan.Count); treeSpan = TreeSpan.FromBounds(50, 50); Assert.Equal(50, treeSpan.Start); Assert.Equal(0, treeSpan.Count); Assert.True(treeSpan.IsEmpty); }
public void TestOperators() { #pragma warning disable CS1718 // Comparison made to same variable Assert.True(TreeSpan.Invalid == TreeSpan.Invalid); Assert.False(TreeSpan.Invalid != TreeSpan.Invalid); #pragma warning restore CS1718 // Comparison made to same variable Assert.True(new TreeSpan(50, 50) == TreeSpan.FromBounds(50, 100)); Assert.False(new TreeSpan(50, 50) != TreeSpan.FromBounds(50, 100)); Assert.False(new TreeSpan(0, 0) == TreeSpan.Invalid); Assert.True(new TreeSpan(0, 0) != TreeSpan.Invalid); }
public void TestPartialEnumeration() { Random random = new Random(1); TreeList <int> list = new TreeList <int>(branchingFactor: 4); List <int> reference = new List <int>(); for (int i = 0; i < 2 * 4 * 4; i++) { int index = random.Next(list.Count + 1); list.Insert(index, i); reference.Insert(index, i); } // Test a subsection of the list var listEnumerator = new TreeList <int> .Enumerator(list, TreeSpan.FromBounds(1, list.Count - 1)); IEnumerator <int> referenceEnumerator = reference.Skip(1).Take(reference.Count - 2).GetEnumerator(); TestEnumerators(referenceEnumerator, listEnumerator); // Test the first half listEnumerator = new TreeList <int> .Enumerator(list, TreeSpan.FromBounds(0, list.Count / 2)); referenceEnumerator = reference.Take(reference.Count / 2).GetEnumerator(); TestEnumerators(referenceEnumerator, listEnumerator); // Test the last half listEnumerator = new TreeList <int> .Enumerator(list, TreeSpan.FromBounds(list.Count / 2, list.Count)); referenceEnumerator = reference.Skip(reference.Count / 2).GetEnumerator(); TestEnumerators(referenceEnumerator, listEnumerator); void TestEnumerators(IEnumerator <int> expected, TreeList <int> .Enumerator actual) { Assert.Equal(referenceEnumerator.Current, listEnumerator.Current); while (true) { if (!referenceEnumerator.MoveNext()) { Assert.False(listEnumerator.MoveNext()); break; } Assert.True(listEnumerator.MoveNext()); Assert.Equal(referenceEnumerator.Current, listEnumerator.Current); } Assert.Equal(referenceEnumerator.Current, listEnumerator.Current); } }