Exemplo n.º 1
0
        public void ShouldEvaluateAsMajorIntervalsWithInitAndEndMinorExclusive()
        {
            var intervalOne = new IntervalWithValue <long, long>(1, 5, 0);
            var intervalTwo = new IntervalWithValue <long, long>(-5, 0, 0);

            Assert.Equal(1, intervalOne.CompareTo(intervalTwo));
        }
Exemplo n.º 2
0
        public void ShouldSearchCorrectIntervalInAllLayersNodeOverlapped()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeFour          = new TreeNode <long, long>(intervalNodeFour, null, null);
            var intervalNodeFive  = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeFive          = new TreeNode <long, long>(intervalNodeFive, null, null);
            var intervalNodeSix   = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeSix           = new TreeNode <long, long>(intervalNodeSix, null, null);
            var intervalNodeSeven = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeSeven         = new TreeNode <long, long>(intervalNodeSeven, null, null);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeTwo           = new TreeNode <long, long>(intervalNodeTwo, nodeFour, nodeFive);
            var intervalNodeThree = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeThree         = new TreeNode <long, long>(intervalNodeThree, nodeSix, nodeSeven);
            var intervalNodeOne   = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeOne           = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree);
            var expectedIntervals = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne,
                intervalNodeTwo,
                intervalNodeThree,
                intervalNodeFour,
                intervalNodeFive,
                intervalNodeSix,
                intervalNodeSeven
            }.OrderBy(value => value);
            var intervals = new List <IntervalWithValue <long, long> >();

            nodeOne.Search(intervals, 5, true, true);
            intervals = intervals.OrderBy(value => value).ToList();
            Assert.Equal(7, intervals.Count);
            Assert.Equal(expectedIntervals, intervals);
        }
Exemplo n.º 3
0
        public void ShouldEvaluateAsEqualIntervals()
        {
            var intervalOne = new IntervalWithValue <long, long>(1, 5, 0);
            var intervalTwo = new IntervalWithValue <long, long>(1, 5, 0);

            Assert.Equal(0, intervalOne.CompareTo(intervalTwo));
        }
Exemplo n.º 4
0
        public void ShouldBuildCorrectlySortedTreeLayersComplete()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeFour          = new TreeNode <long, long>(intervalNodeFour, null, null);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var nodeFive          = new TreeNode <long, long>(intervalNodeFive, null, null);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var nodeSix           = new TreeNode <long, long>(intervalNodeSix, null, null);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var nodeSeven         = new TreeNode <long, long>(intervalNodeSeven, null, null);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var nodeTwo           = new TreeNode <long, long>(intervalNodeTwo, nodeFour, nodeFive);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var nodeThree         = new TreeNode <long, long>(intervalNodeThree, nodeSix, nodeSeven);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var nodeOne           = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals);

            Assert.Equal(nodeOne, tree.Root);
        }
Exemplo n.º 5
0
        public void ShouldResolveCorrectlyEnumerator()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals);

            using var enumerator = tree.GetEnumerator();
            var enumeratorList = new List <IntervalWithValue <long, long> >();

            while (enumerator.MoveNext())
            {
                enumeratorList.Add(enumerator.Current);
            }
            enumeratorList.Sort();
            treeIntervals.Sort();
            Assert.Equal(treeIntervals, enumeratorList);
        }
Exemplo n.º 6
0
        public void ShouldEvaluateAsMajorIntervalContainedInOtherInterval()
        {
            var intervalOne = new IntervalWithValue <long, long>(1, 5, 0);
            var intervalTwo = new IntervalWithValue <long, long>(-5, 10, 0);

            Assert.Equal(1, intervalOne.CompareTo(intervalTwo));
        }
Exemplo n.º 7
0
        public void TwoIntervalWithSameValueAndDifferentInitAndEndShouldNotBeEqual()
        {
            var intervalOne = new IntervalWithValue <long, long>(1, 5, 0);
            var intervalTwo = new IntervalWithValue <long, long>(-5, 10, 0);

            Assert.False(intervalOne.Equals(intervalTwo));
        }
Exemplo n.º 8
0
        public void TwoIntervalWithSamePropertiesShouldBeEqual()
        {
            var intervalOne = new IntervalWithValue <long, long>(1, 5, 0);
            var intervalTwo = new IntervalWithValue <long, long>(1, 5, 0);

            Assert.True(intervalOne.Equals(intervalTwo));
        }
Exemplo n.º 9
0
        public void TwoIntervalWithAllDifferentPropertiesShouldNotBeEqual()
        {
            var intervalOne = new IntervalWithValue <long, long>(1, 5, 0);
            var intervalTwo = new IntervalWithValue <long, long>(-5, 10, -9);

            Assert.False(intervalOne.Equals(intervalTwo));
        }
Exemplo n.º 10
0
        public void ShouldEvaluateAsMinorIntervalWithInitEqualAndEndMajor()
        {
            var intervalOne = new IntervalWithValue <long, long>(1, 5, 0);
            var intervalTwo = new IntervalWithValue <long, long>(1, 6, 0);

            Assert.Equal(-1, intervalOne.CompareTo(intervalTwo));
        }
Exemplo n.º 11
0
        public void ShouldReturnNullOnRightNullLeafAndLookingUpper()
        {
            var interval = new IntervalWithValue <long, long>(1, 5, 0);
            var node     = new TreeNode <long, long>(interval, null, null);
            var result   = node.Search(10, false, false);

            Assert.Null(result);
        }
Exemplo n.º 12
0
        public void ShouldCreateIntervalCorrectly()
        {
            var interval = new IntervalWithValue <long, string>(1, 2, "");

            Assert.Equal(1, interval.Init);
            Assert.Equal(2, interval.End);
            Assert.Equal("", interval.Value);
        }
Exemplo n.º 13
0
        public void ShouldReturnTheIntervalInOneNode()
        {
            var interval  = new IntervalWithValue <long, long>(1, 5, 0);
            var node      = new TreeNode <long, long>(interval, null, null);
            var intervals = new List <IntervalWithValue <long, long> >();

            node.Search(intervals, 3, false, false);
            Assert.Single(intervals);
            Assert.Equal(interval, intervals.First());
        }
Exemplo n.º 14
0
        public void ShouldReturnTheRightIntervalInNodeWithTwoChildren()
        {
            var intervalNodeTwo   = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeTwo           = new TreeNode <long, long>(intervalNodeTwo, null, null);
            var intervalNodeThree = new IntervalWithValue <long, long>(10, 15, 2);
            var nodeThree         = new TreeNode <long, long>(intervalNodeThree, null, null);
            var intervalNodeOne   = new IntervalWithValue <long, long>(5, 10, 0);
            var nodeOne           = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree);
            var intervals         = new List <IntervalWithValue <long, long> >();

            nodeOne.Search(intervals, 12, false, false);
            Assert.Single(intervals);
            Assert.Equal(intervalNodeThree, intervals.First());
        }
Exemplo n.º 15
0
        public void ShouldSearchFirstInLargeAmountOfExclusiveIntervalsUpper()
        {
            var intervals = new List <IntervalWithValue <long, long> >();

            for (var i = 0; i < 50000000; i += 50)
            {
                intervals.Add(new IntervalWithValue <long, long>(i, i + 50, 0));
            }
            var tree     = new MutableIntervalBalancedTree <long, long>(intervals);
            var expected = new IntervalWithValue <long, long>(49999900, 50000000, 0);

            var result = tree.SearchFirst(49999925, false, false);

            Assert.Equal(expected, result);
        }
Exemplo n.º 16
0
        public void ShouldReturnTwoOverlappedIntervalsInNodeWithTwoChildren()
        {
            var intervalNodeTwo   = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeTwo           = new TreeNode <long, long>(intervalNodeTwo, null, null);
            var intervalNodeThree = new IntervalWithValue <long, long>(10, 15, 2);
            var nodeThree         = new TreeNode <long, long>(intervalNodeThree, null, null);
            var intervalNodeOne   = new IntervalWithValue <long, long>(5, 10, 0);
            var nodeOne           = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree);
            var intervals         = new List <IntervalWithValue <long, long> >();

            nodeOne.Search(intervals, 5, true, true);
            Assert.Equal(2, intervals.Count);
            Assert.Equal(intervalNodeOne, intervals[0]);
            Assert.Equal(intervalNodeTwo, intervals[1]);
        }
Exemplo n.º 17
0
        public void ShouldThrowExceptionWithOverlappingCheckOnOneIntervalOverlapped()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(9, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };

            Assert.Throws <IntervalsOverlappedException>(() =>
                                                         new ImmutableIntervalBalancedTree <long, long>(treeIntervals, true));
        }
Exemplo n.º 18
0
        public void OnNotNullRootAndNotExistingValueContainsShouldReturnFalse()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals);

            Assert.DoesNotContain(new IntervalWithValue <long, long>(100, 115, 2), tree);
        }
Exemplo n.º 19
0
        public void ShouldThrowExceptionWithOverlappingCheckOnAllIntervalOverlapped()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(0, 5, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(0, 5, 3);
            var intervalNodeSeven = new IntervalWithValue <long, long>(0, 5, 4);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(0, 5, 5);
            var intervalNodeThree = new IntervalWithValue <long, long>(0, 5, 6);
            var intervalNodeOne   = new IntervalWithValue <long, long>(0, 5, 7);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };

            Assert.Throws <IntervalsOverlappedException>(() =>
                                                         new MutableIntervalBalancedTree <long, long>(treeIntervals, true));
        }
Exemplo n.º 20
0
        public void ShouldThrowExceptionWithOverlappingCheckOnContainedIntervalsOverlapped()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(1, 15, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(2, 3, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(4, 5, 3);
            var intervalNodeSeven = new IntervalWithValue <long, long>(6, 7, 4);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(8, 9, 5);
            var intervalNodeThree = new IntervalWithValue <long, long>(10, 11, 6);
            var intervalNodeOne   = new IntervalWithValue <long, long>(12, 13, 7);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };

            Assert.Throws <IntervalsOverlappedException>(() =>
                                                         new MutableIntervalBalancedTree <long, long>(treeIntervals, true));
        }
Exemplo n.º 21
0
        public void ShouldCountCorrectlyItems()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals);

            Assert.Equal(7, tree.Count);
        }
Exemplo n.º 22
0
        public void ShouldGenerateCorrectlyTreeWithOverlappingCheckOnNoIntervalsOverlapped()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals, true);

            Assert.Equal(7, tree.Count);
        }
Exemplo n.º 23
0
        public void ShouldNotRemoveNotExistingIntervalFromTree()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals);

            Assert.False(tree.Remove(new IntervalWithValue <long, long>(115, 120, 0)));
            Assert.Equal(7, tree.Count);
        }
Exemplo n.º 24
0
        public void ShouldRemoveCorrectlyIntervalFromTree()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals);

            Assert.True(tree.Remove(new IntervalWithValue <long, long>(15, 20, 0)));
            Assert.Equal(6, tree.Count);
            Assert.DoesNotContain(new IntervalWithValue <long, long>(15, 20, 0), tree);
        }
Exemplo n.º 25
0
        public void ShouldSearchInTree()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree   = new MutableIntervalBalancedTree <long, long>(treeIntervals);
            var result = tree.Search(3, false, false);

            Assert.Single(result);
            Assert.Equal(intervalNodeFour, result.First());
        }
Exemplo n.º 26
0
        public void ShouldSearchCorrectlyNullOnSpacedIntervals()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeFour          = new TreeNode <long, long>(intervalNodeFour, null, null);
            var intervalNodeFive  = new IntervalWithValue <long, long>(11, 15, 2);
            var nodeFive          = new TreeNode <long, long>(intervalNodeFive, null, null);
            var intervalNodeSix   = new IntervalWithValue <long, long>(21, 25, 0);
            var nodeSix           = new TreeNode <long, long>(intervalNodeSix, null, null);
            var intervalNodeSeven = new IntervalWithValue <long, long>(31, 35, 0);
            var nodeSeven         = new TreeNode <long, long>(intervalNodeSeven, null, null);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(6, 10, 1);
            var nodeTwo           = new TreeNode <long, long>(intervalNodeTwo, nodeFour, nodeFive);
            var intervalNodeThree = new IntervalWithValue <long, long>(26, 30, 2);
            var nodeThree         = new TreeNode <long, long>(intervalNodeThree, nodeSix, nodeSeven);
            var intervalNodeOne   = new IntervalWithValue <long, long>(16, 20, 0);
            var nodeOne           = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree);
            var result            = nodeOne.Search(-1, false, false);

            Assert.Null(result);
        }
Exemplo n.º 27
0
        public void ShouldSearchCorrectIntervalInMultipleLayerNodeLastLayer()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeFour          = new TreeNode <long, long>(intervalNodeFour, null, null);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var nodeFive          = new TreeNode <long, long>(intervalNodeFive, null, null);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var nodeSix           = new TreeNode <long, long>(intervalNodeSix, null, null);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var nodeSeven         = new TreeNode <long, long>(intervalNodeSeven, null, null);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var nodeTwo           = new TreeNode <long, long>(intervalNodeTwo, nodeFour, nodeFive);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var nodeThree         = new TreeNode <long, long>(intervalNodeThree, nodeSix, nodeSeven);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var nodeOne           = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree);
            var intervals         = new List <IntervalWithValue <long, long> >();

            nodeOne.Search(intervals, 33, false, false);
            Assert.Single(intervals);
            Assert.Equal(intervalNodeSeven, intervals.First());
        }
Exemplo n.º 28
0
        public void ShouldSearchCorrectlyOnSpacedIntervals()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeFour          = new TreeNode <long, long>(intervalNodeFour, null, null);
            var intervalNodeFive  = new IntervalWithValue <long, long>(11, 15, 2);
            var nodeFive          = new TreeNode <long, long>(intervalNodeFive, null, null);
            var intervalNodeSix   = new IntervalWithValue <long, long>(21, 25, 0);
            var nodeSix           = new TreeNode <long, long>(intervalNodeSix, null, null);
            var intervalNodeSeven = new IntervalWithValue <long, long>(31, 35, 0);
            var nodeSeven         = new TreeNode <long, long>(intervalNodeSeven, null, null);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(6, 10, 1);
            var nodeTwo           = new TreeNode <long, long>(intervalNodeTwo, nodeFour, nodeFive);
            var intervalNodeThree = new IntervalWithValue <long, long>(26, 30, 2);
            var nodeThree         = new TreeNode <long, long>(intervalNodeThree, nodeSix, nodeSeven);
            var intervalNodeOne   = new IntervalWithValue <long, long>(16, 20, 0);
            var nodeOne           = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree);
            var intervals         = new List <IntervalWithValue <long, long> >();

            nodeOne.Search(intervals, 7, false, false);
            Assert.Single(intervals);
            Assert.Equal(intervalNodeTwo, intervals.First());
        }
Exemplo n.º 29
0
        public void ShouldSearchCorrectIntervalInMultipleLayerNodeOverlappedLayers()
        {
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var nodeFour          = new TreeNode <long, long>(intervalNodeFour, null, null);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var nodeFive          = new TreeNode <long, long>(intervalNodeFive, null, null);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var nodeSix           = new TreeNode <long, long>(intervalNodeSix, null, null);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var nodeSeven         = new TreeNode <long, long>(intervalNodeSeven, null, null);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var nodeTwo           = new TreeNode <long, long>(intervalNodeTwo, nodeFour, nodeFive);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var nodeThree         = new TreeNode <long, long>(intervalNodeThree, nodeSix, nodeSeven);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var nodeOne           = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree);
            var intervals         = new List <IntervalWithValue <long, long> >();

            nodeOne.Search(intervals, 5, true, true);
            Assert.Equal(2, intervals.Count);
            Assert.Equal(intervalNodeTwo, intervals[0]);
            Assert.Equal(intervalNodeFour, intervals[1]);
        }
Exemplo n.º 30
0
        public void ShouldCopyCorrectlyTreeIntoArray()
        {
            var intervals         = new IntervalWithValue <long, long> [7];
            var intervalNodeFour  = new IntervalWithValue <long, long>(0, 5, 1);
            var intervalNodeFive  = new IntervalWithValue <long, long>(10, 15, 2);
            var intervalNodeSix   = new IntervalWithValue <long, long>(20, 25, 0);
            var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0);
            var intervalNodeTwo   = new IntervalWithValue <long, long>(5, 10, 1);
            var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2);
            var intervalNodeOne   = new IntervalWithValue <long, long>(15, 20, 0);
            var treeIntervals     = new List <IntervalWithValue <long, long> >
            {
                intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive,
                intervalNodeSix, intervalNodeSeven
            };
            var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals);

            tree.CopyTo(intervals, 0);
            treeIntervals.Sort();
            var intervalsAsList = intervals.ToList();

            intervalsAsList.Sort();
            Assert.Equal(treeIntervals, intervalsAsList);
        }