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)); }
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); }
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)); }
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); }
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); }
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)); }
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)); }
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)); }
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)); }
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)); }
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); }
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); }
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()); }
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()); }
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); }
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]); }
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)); }
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); }
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)); }
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)); }
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); }
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); }
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); }
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); }
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()); }
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); }
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()); }
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()); }
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]); }
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); }