Exemple #1
0
 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());
 }
Exemple #2
0
        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)));
        }
Exemple #3
0
 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)));
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
            }
        }